我有 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
- 它就会导致操作数类型错误。
那么,有什么棘手的解决方案吗?
如果您的意思是只有一个是 NULL(与您现有的逻辑匹配),那么:
a is null != b is null
如果你正在使用PostgreSQL,不要忘记括号...
ALTER TABLE "schema"."table" ADD CHECK ((key1 IS NULL) <> (key2 IS NULL));
(我花了将近10分钟试图了解我的支票出了什么问题。