次の方法で共有


||= (複合代入) (Transact-SQL)

適用対象: Azure SQL Database

複合代入演算子を使用した ||= 連結を使用して、式を 変換し 文字またはバイナリ文字列変数の値を使用して、結果の式を変数に割り当てることができます。

||=演算子は、文字およびバイナリ文字列の+= 演算子と同じ動作をサポートします。

Transact-SQL 構文表記規則

構文

variable ||= expression

Note

SQL Server 2014 (12.x) 以前のバージョンの Transact-SQL 構文を確認するには、以前のバージョンのドキュメントを参照してください。

引数

variable

文字型の T-SQL 変数: charvarcharncharnvarcharvarchar(max)、または nvarchar(max)、またはバイナリ型: binary または varbinary または varbinary(max)

式 (expression)

文字またはバイナリ 。 式が文字型でない場合は、式の型を暗黙的に文字列に変換できる必要があります。

戻り値の型

文字列の連結演算子の結果を変数に割り当てます。

  • 変数または式が SQL NULL 値の場合、連結された式の結果は NULL
  • 変数がラージ オブジェクト (LOB) データ型 (varchar(max) または nvarchar(max)) の場合、結果の式は varchar(max) または nvarchar(max)になります。
  • 変数が LOB 型 varbinary(max)の場合、結果の式は varbinary(max)になります。
  • 変数が LOB 型でない場合、結果は変数の宣言された型の最大長まで切り捨てられます。

解説

文字列の連結の結果が 8,000 バイトを超える場合、結果は切り捨てられます。 ただし、連結された文字列の少なくとも 1 つが大きな値型の場合、切り捨ては行われません。

2 つのバイナリ間にある任意の文字列を、その両端にあるバイナリ文字列と結合する場合、文字データへの明示的な変換を使用する必要があります。

長さ 0 の文字列と文字

||= (文字列連結) 演算子は、空の長さ 0 の文字列で動作する場合と、NULLまたは不明な値で動作する場合とは動作が異なります。 長さがゼロの文字列は、間に文字を挟まない 2 つの単一引用符で指定できます。 長さ 0 のバイナリ文字列は、16 進定数にバイト値を指定せずに、 0x として指定できます。 長さがゼロの文字列の連結では、常に 2 つの指定された文字列を連結します。

NULL 値の連結

NULL値に対して実行される算術演算と同様に、NULL値が既知の値に追加されると、通常、結果はNULL値になります。 NULL値で実行される文字列連結操作でも、NULL結果が生成されます。

||=演算子は、SET CONCAT_NULL_YIELDS_NULL オプションを受け入れず、ANSI SQL の動作が有効になっているかのように常に動作し、入力のいずれかがNULLされた場合にNULLを生成します。 これは、 +=||= 連結演算子の動作の主な違いです。 詳しくは、「SET CONCAT_NULL_YIELDS_NULL」をご覧ください。

A. 文字列の複合代入で連結を使用する

DECLARE @v1 varchar(10) = 'a'
SET @v1 ||= 'b';
SELECT @v1

結果セットは次のようになります。

ab

B. バイナリ データの複合代入で連結を使用する

DECLARE @v2 varbinary(10) = 0x1a;
SET @v2 ||= 0x2b;
select @v2;

結果セットは次のようになります。

0x1A2B