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

Пользовательские переменные

В этой теме описано, как объявлять и использовать пользовательские переменные.

Selena 2.5 и более поздние версии поддерживают пользовательские переменные. Эти переменные используются для хранения определенных значений, на которые ссылаются в последующих SQL-операторах, тем самым упрощая написание SQL-операторов и избегая дублирования вычислений.

Примечания по использованию

  • Пользовательские переменные - это переменные, которые могут быть созданы пользователем и существуют в рамках сессии. Это означает, что никто не может получить доступ к пользовательским переменным, которые были объявлены другим пользователем, и когда сессия закрывается, эти переменные истекают.
  • Selena не поддерживает использование оператора SHOW для отображения существующих пользовательских переменных.
  • Следующие типы значений не могут быть объявлены как пользовательские переменные: BITMAP, HLL и PERCENTILE. Пользовательские переменные типа JSON преобразуются в тип STRING для хранения.
  • Начиная с версии v1.5.2, Selena поддерживает тип ARRAY в качестве пользовательской переменной.

Объявление пользовательских переменных

Синтаксис

SET @var_name = expr [, ...];

ПРИМЕЧАНИЕ

  • Все переменные должны начинаться с одного знака @ (at sign).
  • Несколько переменных могут быть объявлены в одном операторе SET и должны быть разделены запятыми (,).
  • Вы можете объявить одну и ту же переменную несколько раз. Вновь объявленное значение перезаписывает исходное значение.
  • Если используется необъявленная переменная, значение переменной по умолчанию равно NULL, а тип NULL - STRING.

Параметры

ПараметрОбязательныйОписание
var_nameДаИмя пользовательской переменной. Правила именования следующие:
  • Имя может содержать буквы, цифры (0-9) и подчеркивания (_).
  • Имя не может превышать 64 символа в длину.
Вы можете объявить строку как пользовательскую переменную, например @'my-var', @"my-var" и @`my-var`. Пользовательские переменные типа STRING могут содержать символы, отличные от букв, цифр и подчеркиваний (_), такие как точки (.).
exprДаЗначение пользовательской переменной. Вы можете указать число (например, 43) или сложное выражение (например, значение, возвращаемое оператором SELECT) для этого параметра. Тип данных переменной совпадает с типом данных результата, возвращаемого выражением.

Примеры

Пример 1: Объявление числа как пользовательской переменной.

SET @var = 43;

Пример 2: Объявление значения, возвращаемого SELECT-запросом, как пользовательской переменной.

SET @var = (SELECT SUM(v1) FROM test);

Пример 3: Объявление нескольких пользовательских переменных в одном операторе SET.

SET @v1=1, @v2=2;

Использование пользовательских переменных в SQL

  • Упрощает написание SQL-операторов. Например, при выполнении следующего оператора SELECT, Selena интерпретирует @var как 1.

    SET @var = 1;
    SELECT @var, v1 from test;
  • Позволяет избежать дублирования вычислений. Например, при выполнении следующего оператора SELECT, Selena интерпретирует @var как результат, возвращаемый командой select sum(c1) from tbl.

    SET @var = (select sum(c1) from tbl);
    SELECT @var, v1 from test;