sql >> Databasteknik >  >> RDS >> Oracle

Hur fungerar "in"-klausulen i Oracle

Rätt (men observera att IN är en operator, inte en klausul och det fungerar så här i SQL i allmänhet, inte bara för Oracle).

where 1 not in (null,1)

motsvarar:

where 1 != null and 1 != 1

som egentligen borde skrivas som:

WHERE 1 NOT IN (NULL, 1)

och

WHERE 1 <> NULL AND 1 <> 1

vilket är detsamma som:

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

som utvärderar till:

WHERE UNKNOWN AND FALSE

och vidare som:

WHERE FALSE

Så det returnerar korrekt inga rader.

Observera att om du hade WHERE 1 NOT IN (NULL, 2) , skulle det utvärderas till WHERE UNKNOWN (kvar som en övning) och inga rader skulle heller returneras.



  1. Tidsgränsen för att få lås väntan har överskridits; försök starta om transaktionen trots att jag inte använder en transaktion

  2. Är det möjligt att referera till en kolumn som flera främmande nycklar?

  3. Groovy SQL Oracle Array Funktion/Procedur Out Parametrar Registrering

  4. Förvandla postgres datumrepresentation till ISO 8601-sträng