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

Comment remplacez-vous une valeur NULL dans la sélection par une chaîne vide? Il ne semble pas très professionnel de produire des valeurs "NULL".

C'est très inhabituel et d'après ma syntaxe, Je m'attendrais à ce que cela fonctionne. En espérant une explication pourquoi il ne marche pas.

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

Exemple de ce à quoi ressemble la table d'origine, ce que je veux, et quelles impressions réelles:

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

Comme vous pouvez le voir, il fait le contraire de ce que je veux, donc j'ai essayé de retourner le IS NULL à IS NOT NULL et bien sûr que Je ne l'ai pas corrigé, j'ai également essayé d'échanger la position du cas, ce qui n'a pas fonctionné.

Modifier: Il semble que les 3 solutions données ci-dessous font toutes la tâche. cordialement

select if(prereq IS NULL ," ",prereq ) from test
select IFNULL(prereq,"") from test
select coalesce(prereq, '') from test
43
demandé sur JScoobyCed 2012-03-05 05:47:30

7 réponses

Si vous devez vraiment afficher toutes les valeurs, y compris les valeurs nulles:

select IFNULL(prereq,"") from test
83
répondu JScoobyCed 2012-03-05 01:53:53
SELECT COALESCE(prereq, '') FROM test

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

Notez également que l'opérateur COALESCE est pris en charge dans SQL standard. Ce n'est pas le cas de IFNULL. C'est donc une bonne pratique d'utiliser le premier. En outre, gardez à l'esprit que COALESCE prend en charge plus de 2 paramètres et il sera itéré sur jusqu'à ce qu'une coïncidence non nulle soit trouvée.

60
répondu Mosty Mostacho 2013-09-09 18:25:55

Essayez ci-dessous;

  select if(prereq IS NULL ," ",prereq ) from test
9
répondu 2012-03-05 01:52:07

La forme originale est presque parfait, vous avez juste à omettre prereq après CAS:

SELECT
  CASE
    WHEN prereq IS NULL THEN ' '
    ELSE prereq
  END AS prereq
FROM test;
3
répondu M.Nemes 2015-10-10 09:48:06

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

Coalesce
Is Null
IfNull
2
répondu Tamil Selvan C 2014-09-08 07:55:51

Essayer COALESCE. Il renvoie la première valeur non nulle.

SELECT COALESCE(`prereq`, ' ') FROM `test`
1
répondu SenorAmor 2012-03-05 01:52:10

Essayez ceci, cela devrait également se débarrasser de ces lignes vides aussi:

SELECT prereq FROM test WHERE prereq IS NOT NULL;
0
répondu Hunter McMillen 2012-03-05 01:51:49