Ich möchte einen ternären bedingten Operator in MySQL implementieren. Ich habe eine Tabelle, in der eine Feld-ID vorhanden ist. Sein Wert kann null sein. Ich möchte id
in einem ternären bedingten Format wie folgt anzeigen :
select id = id == null ? 0 : id;
Ist es in MySQL möglich?
mysql
conditional-operator
user1086355
quelle
quelle
Antworten:
Versuche dies :
quelle
null
oder''
und vielleicht sogar suchen0
. mySQL ist manchmal ein bisschen wie eine DucheDie Dokumentation ist dein Freund; du solltest es lesen!
Es sagt:
Und dann viele Beispiele. Dies entspricht der Verwendung einer ternären Bedingung mit einem Vergleich mit
NULL
und dem Vergleichssubjekt als zweitem Operanden. Dass es nicht passiert, die Symbole zu verwenden?
und:
Sie dorthin zu bringen, ist für nichts wirklich relevant.Also in Ihrem Fall:
Wenn Sie unbedingt drei Operanden explizit angeben möchten (warum?!), Wechseln Sie zu
IF
:quelle
CASE WHEN id IS NULL THEN 0 ELSE id END
IFNULL
ist terser.IF
anstelle vonIFNULL
oder verwenden,COALESCE
weil ich Daten in eine andere Herstellerdatenbank migriere und die Nicht-Null-Werte nicht importieren möchte, sondern nur als generischen Status interpretieren möchte.SELECT IF(a.cancellationReason IS NOT NULL, 'C', 'A')) as appointment_status
funktioniert bei mir.Es gibt zwei Möglichkeiten, wie Sie dieselbe Logik wie ein ternärer Operator implementieren können:
IF
Funktion, z.IF(expression, true result, false result)
Verwenden Sie den
CASE
Ausdruck, z.Wenn Sie nach NULL suchen, können Sie die Funktionen
IFNULL
oderCOALESCE
verwenden, z.quelle