# Операторы выражений

Используйте операторы для вычисления значений, сравнения входных данных и объединения условий, когда [Построение выражений](https://help.qlik.com/ru-RU/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/Transformation/Building-expressions.htm).

К выражениям задач перемещения применяется следующая семантика. Выражения, выполняемые на облачной платформе данных, используют семантику этой платформы. Ставьте пробелы вокруг операторов и заключайте в кавычки текстовые константы и константы дат, например `$HIRE_DATE < '2026-10-08'`.

## Арифметические операторы

Арифметические операции над числовыми значениями

| Оператор | Значение | Пример и результат |
| --- | --- | --- |
| `+` | Складывает два операнда. | `2 + 3` возвращает `5`. |
| `-` | Вычитает правый операнд из левого. Знак минуса в начале меняет знак значения на противоположный. | `5 - 2` возвращает `3`. |
| `*` | Перемножает операнды. | `3 * 4` возвращает `12`. |
| `/` | Делит левый операнд на правый. Целочисленное деление усекается в сторону нуля. Вещественный операнд сохраняет дробный результат. Деление на ноль возвращает NULL. | `7 / 2` возвращает `3`; `7.0 / 2` возвращает `3.5`. |
| `%` | Преобразует оба операнда в целые числа и возвращает остаток от деления. Это не расчет процентов. | `7 % 3` возвращает `1`. |

## Операторы сравнения

Операции сравнения возвращают 1 для true и 0 для false. Обычные сравнения с NULL возвращают NULL; используйте `IS` или `IS NOT` для проверки отсутствующих значений.

Сравнение двух значений

| Оператор | Значение | Пример и результат |
| --- | --- | --- |
| `=` | Проверяет равенство. | `3 = 3` возвращает `1`. |
| `!=` | Проверяет неравенство. | `3 != 4` возвращает `1`. |
| `<>` | Альтернативный оператор неравенства. | `3 <> 3` возвращает `0`. |
| `<` | Проверяет, меньше ли левое значение. | `2 < 3` возвращает `1`. |
| `<=` | Проверяет условие «меньше или равно». | `3 <= 3` возвращает `1`. |
| `>` | Проверяет, больше ли левое значение. | `4 > 3` возвращает `1`. |
| `>=` | Проверяет условие «больше или равно». | `3 >= 3` возвращает `1`. |
| `IS` | Проверяет равенство, не возвращая NULL. Два значения NULL равны; значение NULL и значение, отличное от NULL, не равны. | `NULL IS NULL` возвращает `1`. |
| `IS NOT` | Проверяет неравенство без возврата NULL. | `NULL IS NOT 3` возвращает `1`. |

## Логические и условные операторы

Объединение условий и выбор значений

| Оператор | Значение | Пример и результат |
| --- | --- | --- |
| `AND` | Истинно, если оба условия истинны. Ложный операнд делает результат ложным, даже если другой операнд равен NULL. | `(3 > 2) AND (4 < 3)` возвращает `0`. |
| `OR` | True, если хотя бы одно из условий истинно. Операнд со значением true делает результат равным true, даже если другой операнд равен NULL. | `(3 > 2) OR (4 < 3)` возвращает `1`. |
| `IN` | Проверяет принадлежность к списку в круглых скобках. Если ни одно значение не совпадает и список содержит NULL, возвращает NULL. Пустой список возвращает 0, в том числе для левого операнда со значением NULL. | `2 IN (1, 2, 3)` возвращает `1`; `4 IN (1, NULL)` возвращает NULL. |
| `CASE` | Возвращает первую подходящую ветку. При наличии базового значения сравнивает его с каждым значением WHEN. Без него проверяется каждое условие WHEN. Использует ELSE, если ни одна ветвь не подошла, или NULL, если ELSE отсутствует. | `CASE WHEN 5 > 3 THEN 'High' ELSE 'Low' END` возвращает `'High'`. `CASE 2 WHEN 1 THEN 'One' WHEN 2 THEN 'Two' END` возвращает `'Two'`. |

## Строковые операторы и операторы шаблонов

Объединение текста и сопоставление с шаблонами

| Оператор | Значение | Пример и результат |
| --- | --- | --- |
| `\|\|` | Объединяет текстовые значения. Операнд NULL возвращает NULL. | `'John' \|\| ' ' \|\| 'Smith'` возвращает `'John Smith'`. |
| `LIKE` | Сравнивает левую строку с правым шаблоном. `%` соответствует нулю или более символов; `_` соответствует одному. По умолчанию игнорирует регистр букв ASCII, но не различия регистра символов, отличных от ASCII. ESCAPE задает один символ для литеральных подстановочных знаков. | `'Alice' LIKE 'A%'` возвращает `1`. `'10%' LIKE '10!%' ESCAPE '!'` возвращает `1`. |
| `GLOB` | Сопоставление с учетом регистра с использованием шаблонов в стиле Unix. `*` соответствует нулю или более символам, `?` соответствует одному, а скобки определяют набор символов. | `'file.csv' GLOB '*.csv'` возвращает `1`; `'File.CSV' GLOB '*.csv'` возвращает `0`. |
| `MATCH` | Делегирует вызов определенной приложением функции `match()`. Требуется рабочая реализация; реализация SQLite по умолчанию вызывает ошибку. | `'Quarterly sales' MATCH 'sales'` иллюстрирует синтаксис. Результат зависит от реализации приложения. |
| `REGEXP` | Делегирует вызов определенной приложением функции `regexp()`. SQLite по умолчанию не предоставляет эту функцию. | `'ABC123' REGEXP '^[A-Z]+[0-9]+$'` иллюстрирует синтаксис. Без реализации оценка завершается ошибкой. |

## Побитовые операторы

Эти бинарные операторы работают с битами целых чисел, а не с логическими условиями. `|` означает побитовое ИЛИ, даже если редактор также относит его к категории логических.

Побитовые операции с целыми числами

| Оператор | Значение | Пример и результат |
| --- | --- | --- |
| `<<` | Сдвигает левое целое число влево на количество битов, указанное в правом операнде. | `3 << 1` возвращает `6`. |
| `>>` | Сдвигает левое целое число вправо на количество битов, указанное в правом операнде. | `8 >> 1` возвращает `4`. |
| `&` | Побитовое И: устанавливает бит результата, только если этот бит установлен в обоих операндах. | `6 & 3` возвращает `2`. |
| `\|` | Побитовое ИЛИ: устанавливает бит результата, если этот бит установлен хотя бы в одном из операндов. | `6 \| 3` возвращает `7`. |

## Порядок вычисления и пропущенные значения

Для приведенных выше бинарных операторов приоритет от высшего к низшему следующий: конкатенация; умножение, деление и остаток от деления; сложение и вычитание; побитовые операции; упорядоченные сравнения; проверка на равенство и соответствие шаблону; AND; затем OR. Операторы одного уровня вычисляются слева направо. Круглые скобки переопределяют этот порядок: `(2 + 3) * 4` возвращает `20`, тогда как `2 + 3 * 4` возвращает `14`.

Большинство операторов возвращают NULL, если операнд равен NULL. Описанные выше исключения включают `IS`, `IS NOT`, а также конкретные случаи `AND`, `OR` и `IN`. Используйте `$COALESCE`, если отсутствующее значение должно иметь замену. См. [Функции выражений](https://help.qlik.com/ru-RU/cloud-services/Subsystems/Hub/Content/Sense_Hub/DataIntegration/Transformation/Expression-functions.htm).