メインコンテンツまでスキップ
バージョン: Latest-3.4

ユーザー定義変数

このトピックでは、ユーザー定義変数の宣言と使用方法について説明します。

StarRocks 2.5以降のバージョンでは、ユーザー定義変数をサポートしています。これらの変数は、後の SQL ステートメントで参照される特定の値を格納するために使用され、SQL ステートメントの記述を簡素化し、重複した計算を避けることができます。

使用上の注意

  • ユーザー定義変数は、ユーザーによって作成され、セッション内に存在する変数です。これは、他のユーザーによって宣言されたユーザー定義変数に誰もアクセスできず、セッションが閉じられるとこれらの変数は失効することを意味します。
  • StarRocks は、SHOW ステートメントを使用して既存のユーザー定義変数を表示することをサポートしていません。
  • 次のタイプの値は、ユーザー定義変数として宣言できません: BITMAP、HLL、および PERCENTILE。JSON タイプのユーザー定義変数は、保存のために STRING タイプに変換されます。
  • v3.2.7以降、StarRocks はユーザー定義変数として 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 ステートメントを実行すると、StarRocks は @var1 として解析します。

    SET @var = 1;
    SELECT @var, v1 from test;
  • 重複した計算を避けます。例えば、次の SELECT ステートメントを実行すると、StarRocks は @varselect sum(c1) from tbl コマンドによって返される結果として解析します。

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