17

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

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

所有返回的行都在一列 1 中(我认为是 0)。这里有什么问题?

您的帮助将不胜感激!

谢谢!

4

3 回答 3

51

你不能这样比较NULL,你应该尝试:

SELECT CASE WHEN myImageColumn IS NULL THEN 0 ELSE 1 END 
FROM myTable
于 2013-04-26T20:52:33.560 回答
7

使用不同的形式CASE代替:

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

两个有用的链接:

于 2013-04-26T20:56:27.507 回答
2

有一个旁路:

CASE ifnull(myValue, 'someUniqueStringOrValue')
  WHEN 'someUniqueStringOrValue' THEN 0 -- this means null
  WHEN 'someNormalValue' THEN 1
END
于 2017-08-27T14:51:48.927 回答