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.