Bạn đang sử dụng sai case
biểu hiện. Có hai hình thức. Hình thức bạn muốn là:
(CASE WHEN userName IS NULL THEN 'was null'
WHEN userName IS NOT NULL THEN 'was not null'
END) AS caseExpressionTest
Lưu ý:Không có userName
sau CASE
.
Điều này sẽ kiểm tra từng điều kiện dừng ở điều kiện đầu tiên.
MySQL diễn giải boolean như một giá trị hợp lệ. Vì vậy, phiên bản của bạn là:
-- when userName is NULL
(CASE userName
WHEN 0 THEN 'was null'
WHEN 1 THEN 'was not null'
END AS caseExpressionTest
Điều này sẽ trả về NULL
.
Hoặc:
-- when userName is not NULL
(CASE userName
WHEN 1 THEN 'was null'
WHEN 0 THEN 'was not null'
END AS caseExpressionTest
Có lẽ, userName
là một chuỗi. Điều này sẽ chuyển đổi userName
thành một số nguyên dựa trên các chữ số đứng đầu. Nếu không có chữ số đứng đầu, bạn nhận được 0
, đó là lý do tại sao có sự trùng khớp.