我在学习coalesce时感到困惑,我是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?
最佳答案
你的第一个和第二个将产生相同的结果,但是你错误地理解了这个概念。
Documentation Postgresql中的定义
COALESCE函数返回其第一个参数
无效的。只有当所有参数都为空时才返回空。
这意味着它将返回第一个参数query
,它不像带有Coalesce
或not null
条件的case
语句
让我们举个例子:
select coalesce(null, 1)
它将像您显示的查询一样返回
true
,或者select coalesce(null, null, 1)
它会在
false
中返回1
甚至1
,那么有2个值1
如何?select coalesce(null, 1, 2)
它将返回
arg_3
。为什么?就像在文档中所说的“返回第一个不为空的参数”,所以当有2个值not null
时,第一个参数有1
值将得到返回您可以查看此演示并尝试:
Demo<>Fiddle
希望有帮助
关于sql - 结合情况不同,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52959235/