Je veux implémenter un opérateur conditionnel ternaire dans MySQL. J'ai une table dans laquelle un identifiant de champ existe. Sa valeur peut être nulle. Je veux afficher 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 renvoieexpr2
.
Et puis plein d'exemples. Cela équivaut à utiliser un conditionnel ternaire avec une comparaison avec NULL
et le sujet de comparaison comme deuxième opérande; qu'il ne se trouve pas que vous utilisiez les symboles ?
et :
pour vous y amener n'est vraiment pertinent pour rien.
Donc, dans votre cas:
SELECT IFNULL(`id`, 0) FROM `table`
Si vous cherchez désespérément à fournir trois opérandes explicitement (pourquoi?!), Passez à IF
:
SELECT IF(`id` IS NULL, 0, `id`) FROM `table`
Il existe deux manières d'implémenter 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 <true result> ELSE <false_result> END
Lorsque vous recherchez NULL, vous pouvez utiliser les fonctions IFNULL
ou COALESCE
, par exemple.
IFNULL(ID, 0)
COALESCE(ID, 0)