84 votes

MySQL, coalesce équivalent pour les valeurs vides ?

Je sais que coalesce renverra la première valeur non nulle qui lui sera transmise. y a-t-il quelque chose de similaire qui renverra la première valeur non vide / non fausse?

Exemple:

 select FunctionIWant(0,'','banana') as fruit;  //returns banana.

244voto

Fedir Points 3235

Vous pouvez créer NULL à partir d'une chaîne vide dans MySQL :

 SELECT coalesce(NULLIF(email, ''), 'user@domain.com') FROM users WHERE id=1000000;

15voto

OMG Ponies Points 144785

Utilisez l' instruction/expression ANSI CASE :

 SELECT CASE 
         WHEN LENGTH(col) = 0 OR col IS NULL THEN 'banana'
         ELSE col
       END AS fruit

Il n'y a pas de booléen dans SQL ou MySQL. MySQL stocke en fait la valeur sous la forme d'un INT, les valeurs zéro ou un :

 SELECT CASE 
         WHEN col = 0 THEN 'banana'
         ELSE col
       END AS fruit

1voto

Andrei Points 48

Cela a fonctionné pour moi:

 SELECT IF(myValue > 0, myValue, 'empty string') AS Value FROM myTable;

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