メインコンテンツまでスキップ

User-defined variables

ユーザー定義変数

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

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

使用上の注意

  • ユーザー定義変数は、ユーザーによって作成される変数であり、セッション内で存在します。つまり、他のユーザーが宣言したユーザー定義変数にアクセスすることはできず、セッションが終了するとこれらの変数は失効します。
  • StarRocksでは、SHOW文を使用して既存のユーザー定義変数を表示することはサポートされていません。
  • 次のタイプの値はユーザー定義変数として宣言することができません:BITMAP、HLL、PERCENTILE、およびARRAY。JSONタイプのユーザー定義変数は、ストレージのためにSTRINGタイプに変換されます。

ユーザー定義変数の宣言

構文

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

注意

  • すべての変数は、単一のアットマーク(@)で先行する必要があります。
  • 複数の変数は同じSET文で宣言されることができ、コンマ(,)で区切る必要があります。
  • 同じ変数を複数回宣言することができます。新しく宣言された値で元の値が上書きされます。
  • 宣言されていない変数が使用される場合、変数の値はデフォルトでNULLとなります。NULLのタイプはSTRINGです。

パラメータ

パラメータ

必須

説明

var_name

Yes

ユーザー定義変数の名前です。命名規則は以下のとおりです:

  • 名前には、文字、数字(0-9)、およびアンダースコア(_)を含めることができます。
  • 名前は64文字を超えることはできません。

文字列をユーザー定義変数として宣言することができます。たとえば、@'my-var'、@"my-var"、および@my-varなどです。STRINGタイプのユーザー定義変数には、文字、数字、およびアンダースコア(_)以外の文字も含めることができます。たとえば、ピリオド(.)などです。

expr

Yes

ユーザー定義変数の値です。このパラメータには、数値(たとえば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;