Syntaxe de MYSQL n'évaluant pas pas égale à la présence de null
Je vais avoir des ennuis avec une requête mysql. Je veux exclure les valeurs de 2. J'ai donc pensé que je ferais suivantes:
table products
id | name | backorder
-------------------
1 | product1 | NULL
2 | product2 | NULL
3 | product3 | 2
SELECT name from `products` p
WHERE backorder <> '2'
Toutefois, Cela ne donne pas le résultat souhaité de produit1, produit 2 C'est de donner un vide tableau des résultats.
D'autre part, si j'utilise
SELECT name from `products` p
WHERE backorder = '2'
Puis il produit: product3. Mais je veux obtenir les enregistrements pour lesquels il n'est pas égal à 2.
Quelque chose ne fonctionne pas avec la <>'2'. Se pourrait-il que les valeurs NULL sont jeter off? Quelqu'un peut-il suggérer une solution. Merci à l'avance!
- Vous pouvez utiliser le
NULL
-safe opérateur d'égalité:WHERE NOT backorder <=> 2
Vous devez vous connecter pour publier un commentaire.
utilisation
IS NULL
ouIS NOT NULL
de comparerNULL
valeurs parce qu'ils sont tout simplement inconnus.SQLFiddle Démo (ajout de certains dossiers)
Travailler avec des Valeurs NULL
NULL
et avec la valeur de1
?backorder = 2
droit? puis utiliser cette conditionbackorder IS NULL OR backorder <> '2'
démontré ici: sqlfiddle.com/#!2/e0e57/2:D
IS NULL
est très lent pour des données de grande taille. est-il un moyen de le rendre plus rapideVous pouvez utiliser:
ou
Désolé pour ouvrir ce
Nous pouvons l'utiliser aussi
Essayer cela et voir.
<>
et!=
sont équivalentes. Voir stackoverflow.com/questions/2066987/...