Opérateur MySQL IN et valeurs nulles
Dans MySQL, l'opérateur IN est utilisé pour vérifier si une valeur donnée correspond à une valeur dans un délai spécifié liste. Cependant, lors de l'utilisation de l'opérateur IN avec des valeurs nulles, un comportement inattendu peut se produire.
Pourquoi les valeurs NULL sont exclues
L'opérateur MySQL IN renvoie un résultat booléen (TRUE ou FAUX). Lorsque l’on compare une valeur non nulle à null, le résultat est toujours FAUX. Par conséquent, lorsque vous utilisez IN pour vérifier si une valeur n'est égale à aucune valeur dans une liste incluant null, toutes les lignes avec des valeurs nulles sont exclues du résultat.
Résoudre le problème
Pour inclure des valeurs nulles dans le résultat, les options suivantes peuvent être utilisées :
Error = COALESCE(Error, '') NOT IN ('Timeout','Connection Error');
Error IS NULL OR Error NOT IN ('Timeout','Connection Error');
CASE WHEN Error IS NULL THEN 1 ELSE Error NOT IN ('Timeout','Connection Error') THEN 1 END = 1
SELECT t1.* FROM Table1 t1 LEFT JOIN ( SELECT Error FROM ErrorTable WHERE Error IN ('Timeout') ) t2 ON t1.Error = t2.Error;
Conclusion
Lors de l'utilisation de l'opérateur IN avec des valeurs nulles, il est important pour comprendre que l'opérateur traite null comme une valeur spéciale. Pour inclure des valeurs nulles dans le résultat, des conditions ou techniques supplémentaires, telles que celles mentionnées ci-dessus, doivent être utilisées.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!