用户自定义变量
本文档介绍如何声明和使用用户自定义变量。
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 | 是 | 用户自定义变量的名称。命名约定如下
|
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;