Перейти к основному содержимому

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

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

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

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

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

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

Синтаксис

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

ПРИМЕЧАНИЕ

  • Все переменные должны предваряться одним знаком @ (собака).
  • Несколько переменных могут быть объявлены в одном операторе 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;