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
dans un format conditionnel ternaire comme ceci:
select id = id == null ? 0 : id;
Est-ce possible dans MySQL?
mysql
conditional-operator
user1086355
la source
la source
Réponses:
Essaye ça :
select if(Id is null, 0, id) as Id;
la source
null
ou''
et peut-être même0
. mySQL est parfois un peu duchéLa documentation est votre ami; vous devriez le lire!
Ça dit:
Et puis plein d'exemples. Cela équivaut à utiliser un conditionnel ternaire avec une comparaison à
NULL
et le sujet de comparaison comme deuxième opérande; qu'il n'arrive pas à utiliser les symboles?
et:
à vous y amener n'est vraiment pertinent pour rien.Donc, dans votre cas:
SELECT IFNULL(`id`, 0) FROM `table`
Si vous êtes désespéré de fournir trois opérandes explicitement (pourquoi?!), Passez à
IF
:SELECT IF(`id` IS NULL, 0, `id`) FROM `table`
la source
CASE WHEN id IS NULL THEN 0 ELSE id END
IFNULL
c'est terser.IF
placeIFNULL
ouCOALESCE
parce que je migre des données vers une base de données de fournisseur différente et que je ne veux pas importer les valeurs non nulles, l'interpréter uniquement comme un statut générique.SELECT IF(a.cancellationReason IS NOT NULL, 'C', 'A')) as appointment_status
travaille pour moi.Il existe deux façons d'implémenter la même logique qu'un opérateur ternaire:
IF
fonction, par exemple.IF(expression, true result, false result)
Utilisez l'
CASE
expression, par exemple.CASE WHEN expression THEN <true result> ELSE <false_result> END
Lorsque vous recherchez NULL, vous pouvez utiliser les fonctions
IFNULL
ouCOALESCE
, par exemple.la source