sql >> Base de Datos >  >> RDS >> Oracle

¿Cómo funciona la cláusula 'in' en Oracle?

Correcto (pero tenga en cuenta que IN es un operador, no una cláusula y funciona así en SQL en general, no solo para Oracle).

where 1 not in (null,1)

es equivalente a:

where 1 != null and 1 != 1

que en realidad debería escribirse como:

WHERE 1 NOT IN (NULL, 1)

y

WHERE 1 <> NULL AND 1 <> 1

que es lo mismo que:

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

que se evalúa como:

WHERE UNKNOWN AND FALSE

y además como:

WHERE FALSE

Por lo tanto, correctamente no devuelve filas.

Tenga en cuenta que si tuviera WHERE 1 NOT IN (NULL, 2) , se evaluaría como WHERE UNKNOWN (se dejó como ejercicio) y tampoco se devolverían filas.