Операторы сравнения, предикаты и функции доступны для всех встроенных типов данных.
Все операторы сравнения являются бинарными, которые в результате возвращают значение с типом данных boolean. Доступны следующие виды операторов сравнения:
Оператор | Описание | Пример | Результат |
---|---|---|---|
< | Меньше чем | 2 < 5 | true |
> | Больше чем | 2 > 5 | false |
<= | Меньше или равно | 2 <= 5 | true |
>= | Больше или равно | 2 >= 5 | false |
= | Равно | 2 = 5 | false |
<> | Не равно | 2 <> 5 | true |
Доступны следующие предикаты сравнения:
Предикат | Описание | Пример | Результат |
---|---|---|---|
val BETWEEN lb AND ub | Находится ли значение val между нижней (lb) и верхней (ub) границей диапазона. Эквивалентно выражению: val >= lb AND val <= ub |
'db' between 'abc' and 'db' | true |
val NOT BETWEEN lb AND ub | Находится ли значение не между нижней и верхней границей диапазона (обратное BETWEEN). Эквивалентно выражению: val < lb OR val > ub |
'db' not between 'abc' and 'db' | false |
val BETWEEN SYMMETRIC lb AND ub | Находится ли значение между нижней и верхней границей диапазона после сортировки lb и ub | 'db' between symmetric 'abc' and 'db' | true |
val NOT BETWEEN SYMMETRIC lb AND ub | Находится ли значение не между нижней и верхней границей диапазона после сортировки lb и ub | 'db' not between symmetric 'abc' and 'db' | false |
val IS NULL | Является ли значение эквивалентным NULL | 'db' is null | false |
val IS NOT NULL | Отличается ли значение от NULL | 'db' is not null | true |
Функция | Возвращаемый тип данных | Описание | Пример | Результат |
---|---|---|---|---|
"<"(arg1, arg2) | boolean | Является ли arg1 меньше arg2 | "<"('aa', 'ab') | true |
">"(arg1, arg2) | boolean | Является ли arg1 больше arg2 | ">"('aa', 'ab') | false |
"<="(arg1, arg2) | boolean | Является ли arg1 меньше или равным arg2 | "<="('aa', 'ab') | true |
">="(arg1, arg2) | boolean | Является ли arg1 больше или равным arg2 | ">="('aa', 'ab') | false |
"="(arg1, arg2) | boolean | Является ли arg1 равным arg2 | "="('aa', 'ab') | false |
"<>"(arg1, arg2) | boolean | Является ли arg1 не равным arg2 | "<>"('aa', 'ab') | true |
"between"(arg_1 any, arg_2 any, arg_3 any, boolean, boolean, boolean, boolean, boolean) | boolean | Проверяется нахождение arg1 между arg2 и arg3 | "between"('ab', 'aa', 'ac', false, false, false, false, false) | true |
coalesce(arg1, arg2, ...) | Тот же, что и у arg1 или arg2 | Возвращается первое значение не в списке не равное NULL. Если все аргументы равны NULL, то возвращается NULL. Должно быть передано не менее двух параметров | coalesce(null, 'ac', 'dc') | 'ac' |
{fn IFNULL(arg1, arg2)} | Тот же, что и у arg1 или arg2 | Возвращается arg1, если arg1 не равно NULL. В противном случае возвращается arg2 | {fn ifnull(null, 'ams')} | 'ams' |
ifthenelse(boolean arg1, arg2, arg3) | Тот же, что и у arg2 или arg3 | Если выражение в arg1 имеет значение true, то в результате возвращается arg2. Иначе, возвращается arg3 | ifthenelse(('a' = 'b'), 1, 2) | 2 |
isnull(arg1) | boolean | Является ли arg1 равным NULL | isnull('aa') | false |
nullif(arg1, arg2) | same as arg1 | Возвращается NULL если выражение arg1 = arg2 принимает значение true. В противном случае возвращается arg1. Эквивалентно: CASE WHEN arg1 = arg2 THEN NULL ELSE arg1 END | nullif('ams', 'ams') | null |
"like"(s, pat, escp, isen) | boolean | Сопоставляется PRCE-шаблон pat со строкой s с использованием экранирующего символа escp для исключения подстановочных знаков, и флагом isen для нечувствительных к регистру совпадений. При совпадении возвращается true, иначе — false | "like"('ab', 'a%', '#', false) | true |
not_like(s, pat, escp, isen) | boolean | Сопоставляется PRCE-шаблон pat со строкой s с использованием экранирующего символа escp для исключения подстановочных знаков, и флагом isen для нечувствительных к регистру совпадений. При совпадении возвращается false, иначе — true | not_like('a_bc', '_%b%', '#', false) | false |