I have 2 nullable CHAR
columns and I need to check if only one of them is null.
Doing
(a IS NULL AND b IS NOT NULL) OR (a IS NOT NULL AND b IS NULL)
is boring. And I would like to avoid creating custom functions for that.
I was thinking about something like
COALESCE(a, 1) + COALESCE(b, 1) = 1
but as long as a
is char
- it causes operand type error.
So, any tricky solutions?
If you mean exactly one is NULL (which matches your existing logic), then:
a is null != b is null
And if you're using PostgreSQL don't forget the parentheses...
ALTER TABLE "schema"."table" ADD CHECK ((key1 IS NULL) <> (key2 IS NULL));
(I spent almost 10 minutes trying to understand what was wrong with my CHECK.)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With