webForumDet fria alternativet

freetext(fält, '%') ?

6 svar · 300 visningar · startad av Brimba

BrimbaMedlem sedan dec. 19995 875 inlägg
#1

Hej!

Jag försöker ordna så att jag i mitt wherevillkor kör

and freetext(fält, @searchString)

endast när @searchString skiljer sig från ''

Så som man exempelvis kan göra vid en vanlig jämförelse.

and fält = case @searchString when '' then fält else @searchString end

Någon som har några tips på detta?

spangoMedlem sedan juni 20008 205 inlägg
#2

... WHERE (@searchString <> '') AND freetext(fält, @searchString) ?

BrimbaMedlem sedan dec. 19995 875 inlägg
#3

Njae, det var inte riktigt så jag menade.

Jag vill endast lägga till wherevillkoret när @searchString skiljer sig från ''. Men annars skall den hämta alla poster.

LarsGMedlem sedan dec. 200012 464 inlägg
#4
if @searcstring <> '' 
   select ...
else
   select
BrimbaMedlem sedan dec. 19995 875 inlägg
#5

Japp, så kan man göra. Problemet är att det blir så fult :( Ville lösa det på ett annat sätt :)

spangoMedlem sedan juni 20008 205 inlägg
#6

Då fessöker vi igen då:
SELECT foo FROM bar WHERE @searchstring = '' OR freetext(quux, @searchString)
Antingen är strängen tom, och då blir första halvan av (och därmed hela) OR-villkoret sant, annars får villkoret samma värde som freetext returnerar.
Eller är jag dum i huvudet och hajar inte vad du menar? :q

BrimbaMedlem sedan dec. 19995 875 inlägg
#7

Jo du missuppfattar mig nog lite.
i freetext() kan man inte skicka in en tom sträng, man kan heller inte skicka in % eller _ eller något annat wildcard. Den kräver att man skickar in ett "riktigt" ord att söka på.

Utifrån detta så vill ja alltså göra följande:

Om @searchString är tom så kör inte freetext() annars kör freetext() i wherevillkoret.

Problemet är att man inte kan använda ifsats i wherevillkoret utan då får man lägga den runt hela selecten och det blir inte snyggt. Därför söker jag en annan lösning.

OM @searchString är tom så skall det se ut såhär:
Select foo from bar where kek=kek2

Annars:
Select foo from bar where kek=kek2 and freetext(foo, @searchString)
Är du med?

126 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
123 ms — hämta tråd, inlägg och bilagor (db)