Anda menyalahgunakan case
ekspresi. Ada dua bentuk. Bentuk yang Anda inginkan adalah:
(CASE WHEN userName IS NULL THEN 'was null'
WHEN userName IS NOT NULL THEN 'was not null'
END) AS caseExpressionTest
Catatan:Tidak ada userName
setelah CASE
.
Ini memeriksa setiap kondisi yang berhenti di awal.
MySQL menafsirkan boolean sebagai nilai yang valid. Jadi versi Anda adalah:
-- when userName is NULL
(CASE userName
WHEN 0 THEN 'was null'
WHEN 1 THEN 'was not null'
END AS caseExpressionTest
Ini akan mengembalikan NULL
.
Atau:
-- when userName is not NULL
(CASE userName
WHEN 1 THEN 'was null'
WHEN 0 THEN 'was not null'
END AS caseExpressionTest
Agaknya, userName
adalah string. Ini akan mengonversi userName
ke bilangan bulat berdasarkan digit terdepan. Jika tidak ada digit awal, Anda mendapatkan 0
, itulah sebabnya ada kecocokan.