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.