Ce problème est apparu lorsque j'ai obtenu des nombres d'enregistrements différents pour des requêtes que je pensais être identiques, l'une utilisant un fichier de type not in
where
et l'autre une contrainte left join
. Le tableau de la not in
avait une valeur nulle (mauvaise donnée), ce qui a fait que la requête a retourné un compte de 0 enregistrement. Je comprends plus ou moins pourquoi, mais j'aurais besoin d'aide pour bien comprendre le concept.
En d'autres termes, pourquoi la requête A renvoie-t-elle un résultat alors que la requête B n'en renvoie pas ?
A: select 'true' where 3 in (1, 2, 3, null)
B: select 'true' where 3 not in (1, 2, null)
C'était sur SQL Server 2005. J'ai également constaté qu'appeler set ansi_nulls off
fait que B renvoie un résultat.