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.