Ellos son semánticamente idénticos.
IN
es solo una abreviatura de una cadena de declaraciones de igualdad como en el segundo ejemplo. El rendimiento también debería ser idéntico.
El tipo no debería importar, siempre se evaluará en una cadena de igualdades.
hay una diferencia cuando se utiliza NOT IN
y datos que pueden ser NULL
, sin embargo - un NULL
no evaluará falsa para una comparación NOT IN
, por lo que puede obtener los registros que no esperaba en el conjunto de resultados.
A modo de ejemplo:
SELECT 'Passed!' WHERE NULL NOT IN ('foo', 'bar')
La consulta anterior no devolverá una fila a pesar de que su valor nominal NULL
es ni 'foo'
o 'bar'
- esto se debe a NULL
es un estado desconocido, y SQL no se puede decir con certeza de que el valor desconocido es NO uno de los valores enumerados IN
.
También sería bueno saber de qué implementación SQL estamos hablando aquí. – JNK