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.