У меня есть 2 нулевых столбца CHAR
, и мне нужно проверить, только один из них имеет значение null.Tricky логический XOR для значений с нулевым значением
Ведение
(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 (а, Ь) = COALESCE (Ь, а)' :) Будет давать неверное значение, если 'а = b'. http://www.sqlfiddle.com/#!1/9c33b/1 – mellamokb
@mellamokb: заслуживает upvote, хотя 'select coalesce (null, null) = coalesce (null, null)' возвращает not boolean (что может привести к ошибки в некоторых случаях) – zerkms