/ / mysql ne compare pas NULL avec une valeur vide - php, mysql, mysqli

mysql ne compare pas NULL comme une valeur vide - php, mysql, mysqli

MySQLi ne compare pas NULL en tant que valeur vide.

Dans mon cas:

if($Id == 1) {
$cond = " AND my_field != "" ";
} elseif ($Id == 2){
$cond = " AND my_field = "" ";
}

Tout en exécutant une instruction mysql ayant !="" dans WHERE conditionner l'ensemble de résultats n'est pas exactement opposé à l'ensemble de résultats ="" dans la condition et ici !="" déclaration fonctionne parfaitement bien.

Mais quand je mets cette condition dans elseif ça marche bien.

elseif ($Id == 2){
$cond = " AND my_field IS NULL ";
}

Réponses:

0 pour la réponse № 1

En fait, la raison derrière la requête n'est pasrenvoyer le bon jeu de résultats est qu'il compare "" avec la valeur NULL stockée dans la base de données. Mais toute comparaison avec NULL dans MySQL renvoie NULL, qui n'est ni vrai ni faux. Par conséquent, les enregistrements de valeurs NULL sont toujours ignorés, quel que soit l'opérateur utilisé, c'est-à-dire = ou! =.

Vérifiez cette requête et vous pourrez la comprendre plus clairement

SELECT 0 IS NULL , 0 IS NOT NULL , "" IS NULL , "" IS NOT NULL, NULL != NULL, NULL = NULL, NULL != "", NULL = ""


6 pour la réponse № 2

NULL n'est pas la même chose qu'une chaîne vide dans MySQL. Essayer

"AND (orders.user_id = "" OR orders.user_id IS NULL)"

0 pour la réponse № 3

Null est la valeur de cas spécial dans SQL en général, vous ne pouvez pas comparer NULL comme ceci id=null , id != null mais id is null , id is not null vous pouvez y jeter un coup d'œil:

http://dev.mysql.com/doc/refman/5.7/en/working-with-null.html

http://dev.mysql.com/doc/refman/5.7/en/comparison-operators.html