J'ai une table appelée match_lineup_substitute qui a l'enregistrement suivant:

player_substitute_id | player_substituted_id | match_id |
       90930                   NULL             2807486

Je veux vérifier si l'enregistrement existe, j'ai donc écrit cette requête:

SELECT COUNT(*) FROM `match_lineup_substitute` 
                WHERE match_id = 2807486 AND 
                player_substitute_id = 90930 AND player_substituted_id = null         

Cela retournera: 0

Qu'est-il arrivé?

-2
Spartaok 20 nov. 2018 à 16:39

3 réponses

Meilleure réponse

Changer de

player_substituted_id = null 

À

player_substituted_id IS NULL 

Si vous voulez vérifier la valeur null dans le champ, vous devez utiliser IS NULL dans la clause where.

1
Sadikhasan 20 nov. 2018 à 13:40

NULL n'est pas une valeur (voyez-la comme "la valeur est inconnue"), donc column = NULL renvoie toujours NULL.

NULL AND quelque chose renvoie NULL

Ainsi, votre condition WHERE ne renvoie pas TRUE (puisqu'elle renvoie NULL), donc la ligne n'est pas sélectionnée.

Utilisez plutôt column IS NULL.

Notez que la même chose est vraie si vous comparez deux colonnes: column1 = column2 sera NULL pour chaque ligne où column1 ou column2 est NULL.

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

0
Pierre-Olivier Vares 20 nov. 2018 à 13:44

Pour vérifier les valeurs de null, utilisez is

... and player_substituted_id IS NULL

Le document

1
juergen d 20 nov. 2018 à 13:41