Перейти к основному содержимому
Версия: 7.0

Операторы сравнения (=, >, <, ...)

Операторы сравнения создают свойства, возвращаемым значением которых является результат операции сравнения. Значения созданных свойств принадлежат встроенному классу BOOLEAN.

В платформе на данный момент поддерживаются следующие операторы сравнения:

ОператорНазваниеОписаниеПримерРезультат
= или ==РавенствоПринимает два операнда на вход, возвращает TRUE, если операнды равны5 = 5 или 5 == 5TRUE
!=НеравенствоПринимает два операнда на вход, возвращает TRUE, если операнды не равны3 != 5TRUE
>, <Строгое сравнениеПринимают два операнда на вход, возвращают TRUE, если условие строгого сравнения выполняется3 > 5NULL
>=, <=Нестрогое сравнениеПринимают два операнда на вход, возвращают TRUE, если условие нестрогого сравнения выполняется4 <= 5TRUE
LIKEСравнение с шаблономПринимает два операнда на вход: строку и шаблон. Возвращает TRUE, если строка соответствует шаблону'abc' LIKE 'a%'TRUE
MATCHПолнотекстовый поискПринимает слева строку или TSVECTOR, справа строку или TSQUERY. Для строковых операндов выполняет полнотекстовый поиск и дополнительную проверку на вхождение подстроки, а для подготовленных TSVECTOR / TSQUERY использует эти значения напрямую'abc def' MATCH 'abc'TRUE

Результат сравнения всегда равен либо TRUE, либо NULL, но никогда FALSE: если условие сравнения не выполняется, результатом является NULL. Во всех операторах, если один из операндов NULL, результат также будет равняться NULL. Это касается и самого литерала NULL: a = NULL и a != NULL равны NULL при любом a, поэтому такое сравнение не может служить условием. Сервер выдаёт для него предупреждение при загрузке модуля. Равенство значения NULL проверяется использованием самого значения как условия (IF a THEN ..., NOT a).

Для операторов равенства и упорядочивания оба операнда должны принадлежать совместимым классам — встроенным классам одного семейства либо пользовательским классам, связанным наследованием.

Значения класса JSON сравниваются как JSON-документы, в том нормализованном виде, в котором они хранятся: два значения с одинаковыми ключами и значениями равны при любом порядке ключей и любом форматировании текста, поэтому JSON(r'{"a":1,"b":2}') = JSON(r'{"b": 2, "a": 1}') даёт TRUE. Значения класса JSONTEXT хранятся и сравниваются как текст.

Язык​

Описание общих операторов сравнения.
Для создания свойства, сравнивающего строку с шаблоном, используется оператор LIKE. Для полнотекстового поиска используется оператор MATCH.

Примеры​

equalBarcodes = barcode(a) = barcode(b);
outOfIntervalValue1(value, left, right) = value < left OR value > right;
outOfIntervalValue2(value, left, right) = NOT (value >= left AND value <= right);
isPhoneNumber(value) = value LIKE '(___) ___-____';