web-dev-qa-db-fra.com

La requête MySql remplace NULL par une chaîne vide dans Select

Comment remplacez-vous une valeur NULL dans la sélection avec une chaîne vide? Il n’a pas l’air très professionnel de sortir des valeurs "NULL".

Ceci est très inhabituel et basé sur ma syntaxe, je pense que cela fonctionnera. En espérant une explication, pourquoi ne pas.

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

Exemple de présentation de la table d'origine, de ce que je veux et de ce qui est imprimé:

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é d'inverser le IS NULL à IS PAS NULL et bien sûr, cela n'a pas été résolu, également essayé d'échanger la position de quand le cas, qui n'a pas fonctionné.

Edit: Il semble que les 3 solutions données ci-dessous remplissent toutes cette tâche. Cordialement

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

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

Coalesce
Is Null
IfNull
4
user1284846

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

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

Coalesce renverra le premier argument non nul qui lui sera transmis de gauche à droite. Si tous les arguments sont nuls, ils renverront null, mais nous y forçons une chaîne vide et aucune valeur null ne sera renvoyée.

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

72
Mosty Mostacho

Essayez ci-dessous;

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

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

SELECT
  CASE
    WHEN prereq IS NULL THEN ' '
    ELSE prereq
  END AS prereq
FROM test;
3
M.Nemes

Essayez COALESCE . Il retourne la première valeur non NULL.

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

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

SELECT prereq FROM test WHERE prereq IS NOT NULL;
0
Hunter McMillen
select IFNULL(`prereq`,'') as ColumnName FROM test

cette requête sélectionne des valeurs "prereq" et si l'une des valeurs est null, elle affiche une chaîne vide à votre convenance. Elle affiche donc toutes les valeurs, à l'exception de celles qui sont NULL.

0
Abderrahmane