我有一个带有图像类型列的表,该表有一些行但是所有行还没有任何图像,它们都是空的。为了测试CASE WHEN NULL,我尝试了这个并且它给出了一个奇怪的结果:
SELECT CASE myImageColumn WHEN NULL THEN 0 ELSE 1 END FROM myTable
所有返回的行都在1的列中(我认为是0)。这有什么不对?
非常感谢您的帮助!
谢谢!
答案 0 :(得分:34)
您无法与NULL
进行比较,您应该尝试:
SELECT CASE WHEN myImageColumn IS NULL THEN 0 ELSE 1 END
FROM myTable
答案 1 :(得分:5)
使用其他形式的CASE
代替:
SELECT CASE WHEN myImageColumn IS NULL THEN 0 ELSE 1 END FROM myTable
两个有用的链接:
答案 2 :(得分:2)
有一个旁路:
CASE ifnull(myValue, 'someUniqueStringOrValue')
WHEN 'someUniqueStringOrValue' THEN 0 -- this means null
WHEN 'someNormalValue' THEN 1
END