Използвате неправилно case изразяване. Има две форми. Формата, която искате е:
(CASE WHEN userName IS NULL THEN 'was null'
WHEN userName IS NOT NULL THEN 'was not null'
END) AS caseExpressionTest
Забележка:Няма userName след CASE .
Това проверява всяко условие, спирайки на първото.
MySQL интерпретира булевите стойности като валидна стойност. Така че вашата версия е:
-- when userName is NULL
(CASE userName
WHEN 0 THEN 'was null'
WHEN 1 THEN 'was not null'
END AS caseExpressionTest
Това ще върне NULL .
Или:
-- when userName is not NULL
(CASE userName
WHEN 1 THEN 'was null'
WHEN 0 THEN 'was not null'
END AS caseExpressionTest
Предполага се, userName е низ. Това ще преобразува userName до цяло число въз основа на водещи цифри. Ако няма водещи цифри, получавате 0 , поради което има съвпадение.