Tricky logical XOR for nullable values

postgresql, postgresql-8.4, sql

Solution

If you mean exactly one is NULL (which matches your existing logic), then:

a is null != b is null

Problem

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?

Original source