zer*_*kms 12 sql postgresql postgresql-8.4
我有2个可空CHAR列,我需要检查其中只有一个是否为null.
干
(a IS NULL AND b IS NOT NULL) OR (a IS NOT NULL AND b IS NULL)
Run Code Online (Sandbox Code Playgroud)
无聊.我想避免为此创建自定义函数.
我在考虑类似的事情
COALESCE(a, 1) + COALESCE(b, 1) = 1
Run Code Online (Sandbox Code Playgroud)
但只要a是char- 它会导致操作数类型错误.
那么,任何棘手的解决方案?
mu *_*ort 25
如果你的意思是一个是NULL(它与你现有的逻辑匹配),那么:
a is null != b is null
Run Code Online (Sandbox Code Playgroud)
如果您使用的是PostgreSQL,请不要忘记括号......
ALTER TABLE "schema"."table" ADD CHECK ((key1 IS NULL) <> (key2 IS NULL));
Run Code Online (Sandbox Code Playgroud)
(我花了差不多10分钟试图了解我的CHECK有什么问题.)