SQL использует тернарную логическую систему со значениями TRUE, FALSE и NULL, которое используется для обозначения отсутствующих или неизвестных данных.
Доступны следующие базовые логические операторы: AND, OR, NOT. Операторы AND и OR являются коммутативными, то есть их операнды могут быть поменяны местами без изменения результата. Ниже представлена таблица логических операций:
a | b | a AND b | a OR b |
---|---|---|---|
true | true | true | true |
true | false | false | true |
false | true | false | true |
false | false | false | false |
true | null | null | true |
null | true | null | true |
false | null | false | null |
null | false | false | null |
null | null | null | null |
a | NOT a | a IS NULL | a IS NOT NULL | a = NULL |
---|---|---|---|---|
true | false | false | true | null |
false | true | false | true | null |
null | null | true | false | null |
Обратите внимание, что проверка того, является ли значение столбца а равным NULL должно выполняться при помощи оператора a IS NULL, а не с помощью a = NULL, так как сравнение «равно» (=) всегда приводит к нулю.
Для использование функций вместо логических операторов необходимо взять название функций в двойные кавычки. Это позволяет избежать коллизий с соответствующим оператором.
Функция | Тип данных ответа | Описание | Пример | Результат |
---|---|---|---|---|
"and"(a boolean, b boolean) | boolean | a И b | "and"(true, false) | false |
"not"(a boolean) | boolean | НЕ a | "not"(true) | false |
"or"(a boolean, b boolean) | boolean | a ИЛИ b | "or"(true, false) | true |
"xor"(a boolean, b boolean) | boolean | a ИЛИ b, но НЕ, a И b | "xor"(true, true) | false |