CASE WHEN NULL在SQLite中产生错误结果?

时间:2013-04-26 20:45:59

标签: sql database sqlite null

我有一个带有图像类型列的表,该表有一些行但是所有行还没有任何图像,它们都是空的。为了测试CASE WHEN NULL,我尝试了这个并且它给出了一个奇怪的结果:

SELECT CASE myImageColumn WHEN NULL THEN 0 ELSE 1 END FROM myTable

所有返回的行都在1的列中(我认为是0)。这有什么不对?

非常感谢您的帮助!

谢谢!

3 个答案:

答案 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