CASE声明中的空白

时间:2015-04-13 21:53:29

标签: sql case case-when

我在其他值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 2value 1时成功显示NULLcasevalue1 value2NULL成功显示CASE WHEN它刚刚返回一个空白。

是否需要对{{1}}声明进行一些重组?

3 个答案:

答案 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')
相关问题