结合情况不同

时间:2018-10-23 23:47:25

标签: sql postgresql

我对学习合并感到困惑,我是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?

1 个答案:

答案 0 :(得分:2)

您的query与第一个和第二个将重现相同的结果,但是您对Coalesce概念的理解是错误的。

Documentation Postgresql中的定义

  

COALESCE函数返回的第一个参数不是   空值。仅当所有参数均为null时,才返回Null。

因此,这意味着它将返回第一个参数not null,它与条件类似casetrue的{​​{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值的参数将获得返回值

您可以查看此演示并尝试:

Demo<>Fiddle

希望有帮助