跳到主要内容
版本: 最新版本-3.5

用户自定义变量

本文档介绍如何声明和使用用户自定义变量。

StarRocks 2.5 及更高版本支持用户自定义变量。这些变量用于存储特定值,这些值在以后的 SQL 语句中被引用,从而简化 SQL 语句的编写并避免重复计算。

使用说明

  • 用户自定义变量是由用户创建并存在于会话中的变量。这意味着没有人可以访问其他用户声明的用户自定义变量,并且当会话关闭时,这些变量将过期。
  • StarRocks 不支持使用 SHOW 语句来显示现有的用户自定义变量。
  • 以下类型的值不能声明为用户自定义变量:BITMAP、HLL 和 PERCENTILE。JSON 类型的用户自定义变量会转换为 STRING 类型进行存储。
  • 从 v3.2.7 开始,StarRocks 支持将 ARRAY 类型作为用户自定义变量。

声明用户自定义变量

语法

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

注意

  • 所有变量都必须以单个 at 符号 (@) 开头。
  • 可以在同一个 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 语句时,StarRocks 会将 @var 解析为 1

    SET @var = 1;
    SELECT @var, v1 from test;
  • 避免重复计算。例如,当您执行以下 SELECT 语句时,StarRocks 会将 @var 解析为 select sum(c1) from tbl 命令返回的结果。

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