Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Wie funktioniert die 'in'-Klausel in Oracle?

Richtig (aber beachten Sie, dass IN ist ein Operator, keine Klausel und funktioniert so in SQL im Allgemeinen, nicht nur für Oracle).

where 1 not in (null,1)

entspricht:

where 1 != null and 1 != 1

was eigentlich so geschrieben werden sollte:

WHERE 1 NOT IN (NULL, 1)

und

WHERE 1 <> NULL AND 1 <> 1

was dasselbe ist wie:

WHERE (1 <> NULL) AND (1 <> 1)

was ausgewertet wird zu:

WHERE UNKNOWN AND FALSE

und weiter als:

WHERE FALSE

Es gibt also korrekterweise keine Zeilen zurück.

Beachten Sie, dass wenn Sie WHERE 1 NOT IN (NULL, 2) hatten , würde es zu WHERE UNKNOWN ausgewertet werden (links als Übung) und es würden auch keine Zeilen zurückgegeben.