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 |