【发布时间】:2023-03-18 06:48:01
【问题描述】:
我有 2 个可空的 CHAR 列,我需要检查其中只有一个是否为空。
在做
(a IS NULL AND b IS NOT NULL) OR (a IS NOT NULL AND b IS NULL)
很无聊。我想避免为此创建自定义函数。
我在考虑类似的事情
COALESCE(a, 1) + COALESCE(b, 1) = 1
但只要a 是char - 它就会导致操作数类型错误。
那么,有什么棘手的解决方案吗?
【问题讨论】:
-
COALESCE(a,b)=COALESCE(b,a)怎么样 :) 如果a=b将产生不正确的值。 sqlfiddle.com/#!1/9c33b/1 -
@mellamokb:值得一票,尽管
select coalesce(null, null) = coalesce(null, null)返回的不是布尔值(在某些情况下可能会导致错误)
标签: sql postgresql postgresql-8.4