J'ai une seule colonne dans une table qui ressemble à ceci:La requête mySQL select ne renvoie pas de résultats lors de l'utilisation d'une clause WHERE par rapport à une colonne NULL.
(field3 est NULL J'utilise QTODBC7.0 pour exécuter des requêtes SQL, et cette application rend les champs NULL apparaissent vides dans la requête. les résultats, plutôt que d'afficher le texte « NULL »)
J'ai une simple requête SQL comme suit:
select * from table where field3 <> 'randomstring'
j'attends la requête pour retourner tous les champs où field3 ne correspond pas à la valeur de 'chaîne aléatoire'.
La colonne 'field3' n'est pas égale à la valeur de 'randomstring', par conséquent, elle doit être retournée dans la requête.
Une chose étrange se produit:
La requête ci-dessus renvoie rien!
field3 est donc égale à NULL, il ne correspond pas à « » randomstring donc, la ligne doit être retourné dans ma requête, mais ce n'est pas.
J'ai fait quelques tests, et j'ai découvert que ceci est dû au fait que field3 est NULL mais pas si field3 est égal à une chaîne vide (pas NULL).
Comment puis-je faire en sorte que l'instruction select fonctionne lorsqu'il peut y avoir des valeurs NULL dans field3?
Utiliser 'colonne3 IS null' pour vérifier la valeur null . – jarlh
Une option est ['<=>'] (https://dev.mysql.com/doc/refman/5.7/fr/comparison-operators.html#operator_equal-to) NULL-safe égal à l'opérateur. – wchiquito