Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Verwenden einer Case-Anweisung mit IS NULL und IS NOT NULL

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.