Sie missbrauchen den case
Ausdruck. Es gibt zwei Formen. Das gewünschte Formular ist:
(CASE WHEN userName IS NULL THEN 'was null'
WHEN userName IS NOT NULL THEN 'was not null'
END) AS caseExpressionTest
Hinweis:Es gibt keinen userName
nach dem CASE
.
Dies prüft jede Bedingung und stoppt bei der ersten.
MySQL interpretiert boolesche Werte als gültigen Wert. Ihre Version ist also entweder:
-- when userName is NULL
(CASE userName
WHEN 0 THEN 'was null'
WHEN 1 THEN 'was not null'
END AS caseExpressionTest
Dies gibt NULL
zurück .
Oder:
-- when userName is not NULL
(CASE userName
WHEN 1 THEN 'was null'
WHEN 0 THEN 'was not null'
END AS caseExpressionTest
Vermutlich userName
ist eine Zeichenfolge. Dadurch wird userName
konvertiert in eine ganze Zahl basierend auf führenden Ziffern. Wenn keine führenden Ziffern vorhanden sind, erhalten Sie 0
, weshalb es eine Übereinstimmung gibt.