我对学习合并感到困惑,我是sql的新手。
示例:
select case when value is null then 1
else value end as value
from table
和
select coalesce(value, 1)
from table
在我在互联网上看到的教程中,
select coalesce (arg_1, arg_2, arg_3)
如果我做
select coalesce(value, 1, 2)
如何显示返回值为2?
答案 0 :(得分:2)
您的query
与第一个和第二个将重现相同的结果,但是您对Coalesce
概念的理解是错误的。
COALESCE函数返回的第一个参数不是 空值。仅当所有参数均为null时,才返回Null。
因此,这意味着它将返回第一个参数not null
,它与条件类似case
或true
的{{1}}语句一样
让我们尝试使用示例:
false
它将像您显示的查询一样返回select coalesce(null, 1)
,或者
1
即使select coalesce(null, null, 1)
中的1
也会返回1
,还有两个值arg_3
呢?
not null
它将返回select coalesce(null, 1, 2)
。为什么?就像文档中所说的“ 返回其第一个不为空的参数”一样,因此当存在两个值1
时,第一个具有not null
值的参数将获得返回值>
您可以查看此演示并尝试:
希望有帮助