Zneužíváte case
výraz. Existují dvě formy. Požadovaný formulář je:
(CASE WHEN userName IS NULL THEN 'was null'
WHEN userName IS NOT NULL THEN 'was not null'
END) AS caseExpressionTest
Poznámka:Neexistuje žádné userName
za CASE
.
Toto kontroluje každou podmínku, která se zastaví na první.
MySQL interpretuje booleany jako platnou hodnotu. Vaše verze je tedy buď:
-- when userName is NULL
(CASE userName
WHEN 0 THEN 'was null'
WHEN 1 THEN 'was not null'
END AS caseExpressionTest
To vrátí NULL
.
Nebo:
-- when userName is not NULL
(CASE userName
WHEN 1 THEN 'was null'
WHEN 0 THEN 'was not null'
END AS caseExpressionTest
Pravděpodobně userName
je řetězec. Tím se převede userName
na celé číslo založené na úvodních číslicích. Pokud nejsou žádné úvodní číslice, dostanete 0
, což je důvod, proč existuje shoda.