Операторы, используемые внутри инструкций SELECT и WHERE, можно условно разделить на три группы:
- Скобки и арифметические выражения;
- Логические выражения.
Скобки и арифметические выражения
Команда SELECT может работать как простой калькулятор, который умеет производить арифметические операции с числами. Для записи арифметических операций используются операторы:
- * умножение;
- / деление;
- + сложение;
- - вычитание.
Например, команда
SELECT 2+7;
вернет результат 9.
Команда
SELECT 8-10;
вернет результат -2;
Для изменения приоритета арифметических операций в выражениях можно использовать круглые скобки.
Команда
SELECT 3*(8+1);
вернет результат 27;
Команда
SELECT 3/(3+2);
вернет результат 0.60;
При делении на 0 возвращается результат NULL.
SELECT 3/(2*2-4);
Результат: NULL;
Логические выражения
Логическим выражением называется вопрос, который может иметь только два варианта ответа: Истина или Ложь.
Чаще всего простые логические выражения задаются операторами сравнения. К операторам сравнения относятся знаки:
- > больше;
- > = больше или равно;
- = равно;
- , ! = не равно;
- NULL-безопасное сравнение.
Значения, которые сравниваются, называются операндами.
Значение Истина обозначается в sql через 1, Ложь – через 0.
SELECT 1=2;
Результат: 0.
SELECT 25=20+5;
Результат 1.
SELECT 3!=5;
Результат: 1.
Сравнивать можно не только числа, но и строки. При сравнении строк при помощи знаков сравнения меньшей считается та строка, которая идет раньше по алфавиту.
SELECT "Иванов"
Результат: 1.
SELECT "ООО Топаз"
Результат: 0.
Особого внимания заслуживает знак NULL-безопасного равно. Дело в том, что если один из операндов оказывается равен NULL, то результат будет равен NULL в любом случае. Даже если проверяется логическое выражение NULL=NULL, которое истино Поэтому, если есть подозрение, что один из операндов может иметь значение NULL, лучше использовать NULL-безопасное равно.
SELECT NULL = NULL;
Результат: NULL.
SELECT NULL = 25;
Результат: NULL;
SELECT NULLNULL;
Результат: 1.
SELECT NULL25;
Результат: 0;
Кроме операторов сравнения логические выражения могут строиться при помощи тестов на значение NULL:
- IS NULL;
- IS NOT NULL.
Тесты используются, чтобы определить, равна некоторая величина NULL или нет.
SELECT 25 is NULL;
Результат: 0;
SELECT 25 IS NOT NULL;
Результат: 1.
SELECT 25/(3-3) is NULL;
Результат: 1.
Сложные логические выражения
Логические выражения, состоящие из других более простых логических выражений, называются сложными логическими выражениями.
Сложные логические выражения строятся при помощи логических операторов:
- NOT или ! –логическое «НЕ»;
- AND или && - логическое «И»;
- OR или || - логическое «ИЛИ».
Логическое «НЕ» возвращает истину, если операнд имеет значение ложь, и возвращает «ложь», если операнд имеет значение «истина».
SELECT !(2=5); или SELECT NOT 2=5;
Результат: 1.
SELECT !(2>0);
Результат: 0.
SELECT !1+1;
Результат 1;
SELECT !(1+1);
Результат: 0.
Логическое «И» возвращает значение Истина, если все операнды истины, и возвращает Ложь, если хотя-бы один операнд имеет значение Ложь.
SELECT 25 > 30 AND 30 30 && 30
Результат: 0.
SELECT NULL NULL AND 5=2+3; или SELECT NULL NULL && 5=2+3;
Результат 1;
Логическое «ИЛИ» возвращает значение Истина, если хотя-бы один операнд имеет значение Истина, и возвращает Ложь, если все операнды имеют значение Ложь.
SELECT 23=25 OR 2=2; или SELECT 23=25 || 2=2;
Результат: 1.
SELECT 3 1; или SELECT 3 1;
Результат 0;
При комбинировании логических операторов в одном сложном выражении логическое «И» и логическое «НЕ» имеет приоритет перед логическим «ИЛИ». Для изменения приоритета можно использовать круглые скобки.
SELECT (2=3 OR 2=2) AND NULLNULL;
Результат: 1.