sql >> Database teknologi >  >> RDS >> Oracle

Hvordan virker 'in'-klausulen i oracle

Korrekt (men bemærk at IN er en operator, ikke en klausul, og det fungerer sådan i SQL generelt, ikke kun for Oracle).

where 1 not in (null,1)

svarer til:

where 1 != null and 1 != 1

som egentlig burde skrives som:

WHERE 1 NOT IN (NULL, 1)

og

WHERE 1 <> NULL AND 1 <> 1

hvilket er det samme som:

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

som evaluerer til:

WHERE UNKNOWN AND FALSE

og yderligere som:

WHERE FALSE

Så det returnerer korrekt ingen rækker.

Bemærk, at hvis du havde WHERE 1 NOT IN (NULL, 2) , ville det evaluere til WHERE UNKNOWN (efterladt som en øvelse), og der ville heller ikke blive returneret rækker.



  1. Nogle ideer om ressourcepooling på lavt niveau i PostgreSQL

  2. Hvordan pivoterer man ukendt antal kolonner og ingen aggregater i SQL Server?

  3. Afmystificere CXPACKET og CXCONSUMER ventetyper i SQL Server

  4. Sådan genereres create table sql-sætningen for en eksisterende tabel i postgreSQL