web-dev-qa-db-fra.com

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 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?

75
user1086355

Essaye ça :

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

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 renvoie expr2.

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`
42

Il existe deux manières d'implémenter 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 <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)
19
a'r