||= (複合代入) (Transact-SQL)
適用対象: Azure SQL Database
複合代入演算子を使用した ||=
連結を使用して、式を 変換し 文字またはバイナリ文字列変数の値を使用して、結果の式を変数に割り当てることができます。
||=
演算子は、文字およびバイナリ文字列の+= 演算子と同じ動作をサポートします。
構文
variable ||= expression
引数
variable
文字型の T-SQL 変数: char、 varchar、 nchar、 nvarchar、 varchar(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