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 pasNULL
,IFNULL()
renvoieexpr1
; sinon, il retourneexpr2
.
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:
IF
, par exemple. IF(expression, true result, false result)
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)