ユーザー定義変数
このトピックでは、ユーザー定義変数の宣言と使用方法について説明します。
StarRocks 2.5以降のバージョンでは、ユーザー定義変数をサポートしています。これらの変数は、後のSQL文で参照される特定の値を格納するために使用され、SQL文の記述を簡素化し、重複計算を避けることができます。
使用上の注意
- ユーザー定義変数は、ユーザーによって作成され、セッション内に存在する変数です。これは、他のユーザーが宣言したユーザー定義変数にアクセスできないことを意味し、セッションが閉じられるとこれらの変数は期限切れになります。
- StarRocksは、既存のユーザー定義変数を表示するためのSHOW文をサポートしていません。
- 次のタイプの値はユーザー定義変数として宣言できません: BITMAP, HLL, PERCENTILE, および ARRAY。JSONタイプのユーザー定義変数は、保存のためにSTRINGタイプに変換されます。
ユーザー定義変数の宣言
構文
SET @var_name = expr [, ...];
注意
- すべての変数は、単一のアットマーク (@) を前置する必要があります。
- 同じ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;