適用対象:SQL Server 2025 (17.x) プレビュー
Azure SQL Database
Azure SQL Managed Instance
Microsoft Fabric Preview の SQL データベース
複合代入演算子を使用した ||= 連結を使用して、式を 変換し 文字またはバイナリ文字列変数の値を使用して、結果の式を変数に割り当てることができます。
||=演算子は、文字およびバイナリ文字列の+= 演算子と同じ動作をサポートします。
Syntax
variable ||= expression
Arguments
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 型でない場合、結果は変数の宣言された型の最大長まで切り捨てられます。
Remarks
文字列の連結の結果が 8,000 バイトを超える場合、結果は切り捨てられます。 ただし、連結された文字列の少なくとも 1 つが大きな値型の場合、切り捨ては行われません。
2 つのバイナリ間にある任意の文字列を、その両端にあるバイナリ文字列と結合する場合、文字データへの明示的な変換を使用する必要があります。
||= パイプオペレーターは、SQL Server 2025 または Always-up-to-date更新ポリシーを使用して、Azure SQL Managed Instance で使用できます。
長さ 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」をご覧ください。
Examples
A. 文字列の複合代入で連結を使用する
DECLARE @v1 varchar(10) = 'a'
SET @v1 ||= 'b';
SELECT @v1
結果セットは次のとおりです。
ab
B. バイナリ データの複合代入で連結を使用する
DECLARE @v2 varbinary(10) = 0x1a;
SET @v2 ||= 0x2b;
select @v2;
結果セットは次のとおりです。
0x1A2B