SQL 'Oder' - operator. Wie funktioniert das bei folgendem Szenario?

Ich habe eine Abfrage optimieren und lief in eine situation, die macht mich Frage wie ich haben immer verwendet SQL ODER der Betreiber. (SQL Server 2000)

Ich habe eine Abfrage, wo die Bedingung (WHERE) - Klausel sieht wie folgt aus:

WHERE (Column1 = @Param1 or Column1 LIKE @Param1 + '%')
AND (@Param2 = '' OR Column2 = @Param2 OR Column2 LIKE @Param2 + '%')

Nun, ich habe immer verstanden, dass ODER in SQL ausgewertet werden beide Ausdrücke. Also alle Datensätze, die ausgewertet true für den linken Ausdruck zurückgegeben werden, zusammen mit alle Datensätze, die "true" ausgewertet wird, auf den richtigen Ausdruck. Zum Beispiel:

SELECT * FROM TABLE1
WHERE COL1 = 'Test' OR Col2 = 'Data'

Dieser würde zurück alle Datensätze, in denen COL1'Test' sowie jedem Datensatz, in dem Col2 'Daten'

In dem Beispiel oben habe ich geändert, die Spalte 2 die bedingte der folgenden:

AND(Column2 LIKE ISNULL(@Param2, '') + '%')

Ganz plötzlich, bekomme ich 0 Zeilen zurückgegeben.

Habe ich das verwechselt, ODER nur Ausdrücke ausgewertet werden, bis es ein WAHRES Ergebnis oder eine Bedingung, die bewirkt, dass das 2 verschiedene, um unterschiedliche Ergebnisse zurückgeben?

  • Können Sie nach dem abschließen, wo Sie nach Ihrer änderung?
InformationsquelleAutor JamesEggers | 2009-01-23
Schreibe einen Kommentar