Ich versuche, so etwas wie zu schreiben:Kurzschluss WHERE CASE Verwendung enthält ein ENTHÄLT
SELECT Id FROM SomeTable
WHERE
CASE WHEN (@param IS NULL) THEN
1
ELSE
CONTAINS([FullText],@param)
END = 1
aber ich kann nicht SQL Server scheinen zu bekommen nicht über die Syntax zu beschweren. Gibt es eine Möglichkeit CASE zum Kurzschließen der CONTAINS-Suche zu verwenden?
sogar so etwas wie dies zu tun scheint nicht zu Kurzschluss:
CASE WHEN (@param IS NULL) THEN
1
ELSE
(CASE WHEN CONTAINS([FullText], @param) THEN
1
ELSE
0
END)
END = 1
Mögliches Duplikat von [Wird der SQL WHERE-Klausel-Kurzschluss ausgewertet?] (Http://stackoverflow.com/questions/789231/is-the-sql-where-clause-short-circuit-evaluated) – naomik
Verwendung von ' OR 'sollte ausreichend sein, da die Anweisungen von links nach rechts ausgewertet würden (zB 'WHERE @param IST NULL ODER ENTHÄLT ([FullText], @param)') – Anthony
@Anthony Nope; Siehe die verknüpfte Frage. –