Comment implémenter un opérateur conditionnel ternaire dans MySQL

Je veux implémenter un opérateur conditionnel ternaire dans MySQL. J’ai une table dans laquelle un champ id existe. Sa valeur peut être nulle. Je veux afficher l’ id au format conditionnel ternaire comme ceci:

 select id = id == null ? 0 : id; 

Est-ce possible dans MySQL?

Essaye ça :

 select if(Id is null, 0, id) as Id; 

La documentation est votre ami; vous devriez le lire!

Ça dit:

 IFNULL(expr1,expr2) 

Si expr1 n’est pas NULL , IFNULL() renvoie expr1 ; sinon, il retourne expr2 .

Et puis beaucoup d’exemples. Cela équivaut à utiliser un conditionnel ternaire avec une comparaison avec NULL et le sujet de comparaison en tant que second opérande; qu’il n’arrive pas à utiliser les symboles ? et : pour vous y rendre, il n’ya rien de vraiment pertinent.

Donc, dans votre cas:

 SELECT IFNULL(`id`, 0) FROM `table` 

Si vous êtes désespéré de fournir explicitement trois opérandes (pourquoi ?!), passez à IF :

 SELECT IF(`id` IS NULL, 0, `id`) FROM `table` 

Il y a deux manières de mettre en œuvre la même logique qu’un opérateur ternaire:

  1. Utilisez la fonction IF , par exemple. IF(expression, true result, false result)
  2. Utilisez l’expression CASE , par exemple.

     CASE WHEN expression THEN  ELSE  END 

Lorsque vous vérifiez la valeur NULL, vous pouvez utiliser les fonctions IFNULL ou COALESCE , par exemple.

 IFNULL(ID, 0) COALESCE(ID, 0)