Mysql
 sql >> Database >  >> RDS >> Mysql

Utilizzo di un'istruzione Case con IS NULL e IS NOT NULL

Stai abusando del case espressione. Ci sono due forme. Il modulo che desideri è:

(CASE WHEN userName IS NULL THEN 'was null'
      WHEN userName IS NOT NULL THEN 'was not null'
 END) AS caseExpressionTest

Nota:non esiste un userName dopo il CASE .

Questo controlla ogni condizione fermandosi alla prima.

MySQL interpreta i booleani come un valore valido. Quindi la tua versione è:

-- when userName is NULL
(CASE userName
    WHEN 0 THEN 'was null'
    WHEN 1 THEN 'was not null'
END AS caseExpressionTest

Questo restituirà NULL .

Oppure:

-- when userName is not NULL
(CASE userName
    WHEN 1 THEN 'was null'
    WHEN 0 THEN 'was not null'
END AS caseExpressionTest

Presumibilmente, userName è una stringa. Questo convertirà userName a un numero intero basato su cifre iniziali. Se non ci sono cifre iniziali, ottieni 0 , ecco perché c'è una corrispondenza.