Du missbrukar case
uttryck. Det finns två former. Formen du vill ha är:
(CASE WHEN userName IS NULL THEN 'was null'
WHEN userName IS NOT NULL THEN 'was not null'
END) AS caseExpressionTest
Obs! Det finns inget userName
efter CASE
.
Detta kontrollerar varje tillstånd och stannar vid det första.
MySQL tolkar booleaner som ett giltigt värde. Så din version är antingen:
-- when userName is NULL
(CASE userName
WHEN 0 THEN 'was null'
WHEN 1 THEN 'was not null'
END AS caseExpressionTest
Detta returnerar NULL
.
Eller:
-- when userName is not NULL
(CASE userName
WHEN 1 THEN 'was null'
WHEN 0 THEN 'was not null'
END AS caseExpressionTest
Förmodligen userName
är ett snöre. Detta kommer att konvertera userName
till ett heltal baserat på inledande siffror. Om det inte finns några inledande siffror får du 0
, vilket är anledningen till att det finns en matchning.