85 votes

Requête MySql Remplacer NULL par une chaîne vide dans Select

Comment remplacer une valeur NULL dans la sélection par une chaîne vide ? Cela n'a pas l'air très professionnel de sortir des valeurs "NULL".

C'est très inhabituel et, d'après ma syntaxe, je m'attendrais à ce que cela fonctionne. J'espère pouvoir expliquer pourquoi ce n'est pas le cas.

select CASE prereq WHEN (prereq IS NULL) THEN " " ELSE prereq end from test;

Exemple de ce à quoi ressemble le tableau original, ce que je veux, et ce qui s'imprime réellement :

original     wanted      what actually prints
--------     ------      ---------------------
value1       value1      
NULL                     NULL
value2       value2      
NULL                     NULL

Comme vous pouvez le voir, cela fait l'inverse de ce que je veux. J'ai donc essayé de remplacer IS NULL par IS NOT NULL et, bien sûr, cela n'a pas réglé le problème. J'ai également essayé de permuter la position de when case, ce qui n'a pas fonctionné.

Il semble que les 3 solutions données ci-dessous fassent toutes l'affaire.

select if(prereq IS NULL ," ",prereq ) from test
select IFNULL(prereq,"") from test
select coalesce(prereq, '') from test

132voto

JScoobyCed Points 4232

Si vous devez vraiment sortir toutes les valeurs, y compris les valeurs NULL :

select IFNULL(prereq,"") from test

87voto

Mosty Mostacho Points 22803
SELECT COALESCE(prereq, '') FROM test

Coalesce retourne le premier argument non nul qui lui est passé de gauche à droite. Si tous les arguments sont nuls, il retournera null, mais nous forçons une chaîne vide, donc aucune valeur nulle ne sera retournée.

Notez également que le COALESCE est supporté par le langage SQL standard. Ce n'est pas le cas de IFNULL . C'est donc une bonne pratique d'utiliser le premier. De plus, gardez à l'esprit que COALESCE supporte plus de 2 paramètres et qu'il les parcourra jusqu'à ce qu'une coïncidence non nulle soit trouvée.

18voto

Essayez ci-dessous ;

  select if(prereq IS NULL ," ",prereq ) from test

14voto

Certaines de ces fonctions intégrées devraient fonctionner :

COALESCE (valeur,...)

Renvoie la première valeur non NULL de la liste, ou NULL s'il n'y a pas de valeurs non NULL.

EST NUL

Teste si une valeur est NULL.

IFNULL (expr1,expr2)

Si expr1 n'est pas NULL, IFNULL() renvoie expr1 ; sinon, elle renvoie expr2.

7voto

Abderrahmane Points 24
select IFNULL(`prereq`,'') as ColumnName FROM test

Cette requête sélectionne les valeurs "prereq" et si l'une des valeurs est nulle, elle affiche une chaîne vide comme vous le souhaitez. Ainsi, toutes les valeurs sont affichées mais les valeurs NULL sont affichées en blanc.

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