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
7 réponses
Si vous devez vraiment afficher toutes les valeurs, y compris les valeurs nulles:
select IFNULL(prereq,"") from test
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.
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;
Certaines de ces fonctions intégrées devraient fonctionner:
Coalesce
Is Null
IfNull
Essayez ceci, cela devrait également se débarrasser de ces lignes vides aussi:
SELECT prereq FROM test WHERE prereq IS NOT NULL;