112 votes

Comment vérifier si un champ est nul ou vide dans MySQL ?

J'essaie de comprendre comment vérifier si un champ est NULL ou vide . J'ai ceci :

SELECT IFNULL(field1, 'empty') as field1 from tablename

Je dois ajouter un contrôle supplémentaire field1 != "" quelque chose comme :

SELECT IFNULL(field1, 'empty') OR field1 != ""  as field1 from tablename

Une idée de la façon de procéder ?

232voto

juergen d Points 85039

Soit utiliser

SELECT IF(field1 IS NULL or field1 = '', 'empty', field1) as field1 
from tablename

ou

SELECT case when field1 IS NULL or field1 = ''
            then 'empty'
            else field1
       end as field1 
from tablename

Si vous voulez seulement vérifier null et non pour les chaînes vides, alors vous pouvez également utiliser ifnull() ou coalesce(field1, 'empty') . Mais cela ne convient pas aux chaînes de caractères vides.

31voto

Essayez d'utiliser nullif :

SELECT ifnull(nullif(field1,''),'empty') AS field1
  FROM tablename;

15voto

hims056 Points 13538

Vous pouvez également utiliser CASE pour la même chose :

SELECT CASE WHEN field1 IS NULL OR field1 = '' 
       THEN 'empty' 
       ELSE field1 END AS field1
FROM tablename.

10voto

Gleb Kemarsky Points 5836

Vous pouvez utiliser le site IFNULL fonction à l'intérieur de la IF . Ce sera un peu plus court, et il y aura moins de répétitions du nom du champ.

SELECT IF(IFNULL(field1, '') = '', 'empty', field1) AS field1 
FROM tablename

9voto

user1704340 Points 21

Vous pouvez créer une fonction pour faciliter cette tâche.

create function IFEMPTY(s text, defaultValue text)
returns text deterministic
return if(s is null or s = '', defaultValue, s);

Utilisation :

SELECT IFEMPTY(field1, 'empty') as field1 
from tablename

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X