我在学习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,它不像带有Coalescenot 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/

10-15 21:03