MySql Query Remplace la valeur NULL par une chaîne vide dans Select

Comment remplacer une valeur NULL dans la sélection par une chaîne vide? Il ne semble pas très professionnel de produire des valeurs “NULL”.

Ceci est très inhabituel et basé sur ma syntaxe, je m’attendrais à ce qu’il fonctionne. En espérant une explication pourquoi ça ne marche pas.

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

Exemple de ce à quoi ressemble le tableau d’origine, ce que je veux et quelles sont les 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, par conséquent j’ai essayé de retourner le IS NULL à IS NOT NULL et bien sûr cela ne l’a pas réparé, j’ai également essayé de changer la position du cas, ce qui ne fonctionnait pas.

Edit: Il semble que les 3 solutions données ci-dessous font tout le travail. Cordialement

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

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

 select IFNULL(prereq,"") from test 
 SELECT COALESCE(prereq, '') FROM test 

Coalesce renverra le premier argument non nul qui lui est passé de gauche à droite. Si tous les arguments sont nuls, ils retourneront null, mais nous forçons une chaîne vide là-bas, donc aucune valeur NULL ne sera renvoyée.

Notez également que l’opérateur COALESCE est pris en charge dans SQL standard. Ce n’est pas le cas de IFNULL . Il est donc conseillé d’utiliser le premier. De plus, gardez à l’esprit que COALESCE supporte plus de 2 parameters et qu’il les parcourra jusqu’à ce qu’une coïncidence non nulle soit trouvée.

Essayez ci-dessous;

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

La forme originale est presque parfaite, il vous suffit d’omettre prereq après CASE :

 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 COALESCE . Il renvoie la première valeur non NULL.

 SELECT COALESCE(`prereq`, ' ') FROM `test` 

Essayez ceci, cela devrait également éliminer ces lignes vides aussi:

 SELECT prereq FROM test WHERE prereq IS NOT NULL;