我在其他值NULL
时返回值时遇到问题。
我的SQL如下:
select id
, CASE WHEN value1 IS NOT NULL THEN value1
WHEN value1 IS NULL THEN value2
WHEN value1 IS NULL AND value2 IS NULL THEN value 3
END
from ('table containing these values')
当value 2
为value 1
时成功显示NULL
,case
和value1
value2
时NULL
成功显示CASE WHEN
它刚刚返回一个空白。
是否需要对{{1}}声明进行一些重组?
答案 0 :(得分:2)
我认为你应该使用coalesce
:
select coalesce(value1, value2, value3)
case
的正确表单是:
SELECT (CASE WHEN value1 IS NOT NULL THEN value1
WHEN value2 IS NOT NULL THEN value2
ELSE value3
END)
答案 1 :(得分:1)
第三种情况从未使用过,因为第一种和第二种情况都是互补的,所以它们涵盖了所有可能性。
更改顺序,以便在第二种情况之前检查第三种情况:
select id
, CASE WHEN value1 IS NOT NULL THEN value1
WHEN value1 IS NULL AND value2 IS NULL THEN value3
WHEN value1 IS NULL THEN value2
END
from ('table containing these values')
然而,其中两个条件是超级的,因为您知道如果value1
超过第一个条件,null
总是select id
, CASE WHEN value1 IS NOT NULL THEN value1
WHEN value2 IS NULL THEN value3
ELSE value2
END
from ('table containing these values')
:
{{1}}
答案 2 :(得分:0)
问题是您正在应用CASE选项的顺序,请尝试:
select id
, CASE WHEN value1 IS NULL AND value2 IS NULL THEN value 3
WHEN value1 IS NOT NULL THEN value1
WHEN value1 IS NULL THEN value2
END
from ('table containing these values')