BrimbaMedlem sedan dec. 19995 875 inlägg 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 ... WHERE (@searchString <> '') AND freetext(fält, @searchString) ?
BrimbaMedlem sedan dec. 19995 875 inlägg 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 if @searcstring <> ''
select ...
else
select
BrimbaMedlem sedan dec. 19995 875 inlägg 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 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 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?