Si je veux vérifier si un champ est NULL ou vide à l'aide d'une requête MySQL, je sais que je peux faire quelque chose comme ceci:
column = '' OR column IS NULL
Cependant, existe-t-il un moyen de vérifier cela sans faire deux comparaisons distinctes?
Utilisez COALESCE()
pour "normaliser" la valeur (convertir les valeurs NULL en une chaîne vide);
WHERE COALESCE(mycolumn, '') = ''
Lisez la documentation: COALESCE()
Ou l'inverse; convertir des chaînes vides en NULL;
WHERE NULLIF(mycolumn, '') IS NULL
Documentation: NULLIF()
De ces deux, je préférerais COALESCE () car il fait partie du standard ANSI SQL
Vous pouvez l'expérimenter vous-même, faites-le;
SELECT
mycolumn AS orig_value,
COALESCE(mycolumn, '') AS coalesce_value,
(COALESCE(mycolumn, '') = '') AS compare_result
FROM mytable;
Cela montrera la valeur d'origine, la valeur de "fusion" et le résultat de la comparaison côte à côte pour chaque ligne du tableau
WHERE COALESCE(column, '') = ''
Une autre méthode sans OERE, essayez ceci ..
Sélectionne les valeurs vide et nulle
SELECT ISNULL(NULLIF(fieldname,'')) FROM tablename
Essaye ça:
WHERE NOT(column LIKE '_%')
Sans le NOT, la valeur de la colonne doit avoir au moins un caractère et ne peut pas être NULL
.
EDIT: MySQL semble toujours avaler la valeur NULL de cette façon. Cela devrait mieux fonctionner:
WHERE IFNULL(column, '') = ''