共用方式為


||= (複合指派) (Transact-SQL)

適用於:Azure SQL 資料庫

||=與複合指派運算符的串連可用來串連具有字元或二進位字串變數值的表達式,然後將產生的表達式指派給變數。

運算子 ||= 支援與字元和二進位字串的 += 運算符 相同的行為。

Transact-SQL 語法慣例

Syntax

variable ||= expression

注意

若要檢視 SQL Server 2014 (12.x) 和更早版本的 Transact-SQL 語法,請參閱舊版文件

引數

variable

字元類型的 T-SQL 變數:char、varchar、ncharnvarcharvarchar(max)或 nvarchar(max),或二進位類型的 T-SQL 變數:binaryvarbinary 或 varbinary(max)。

expression

字元或二進位 表達式。 如果表達式不是字元類型,則表達式的類型必須能夠隱含地轉換成字元字串。

傳回類型

將字元字串的串連運算子結果指派給變數。

  • 如果變數或表示式是 SQL NULL 值,則串連表示式的結果為 NULL
  • 如果變數是大型物件 (LOB) 數據類型 (varchar(max)nvarchar(max)),則產生的表達式為 varchar(max)nvarchar(max)
  • 如果變數是 LOB 類型 varbinary(max),則產生的運算式是 varbinary(max)
  • 如果變數不是 LOB 類型,則結果會截斷為變數宣告類型的最大長度。

備註

如果字串的串連結果超出 8,000 位元組的限制,就會截斷結果。 不過,如果至少有一個串連的字串是大型實值型別,則不會發生截斷。

當串連二進位字串和二進位字串之間的任何字元時,必須使用指向字元資料的明確轉換。

長度為零的字串和字元

||= 當運算子使用空的、長度為零的字串時,其行為方式會與使用NULL、 或未知值時不同。 長度為零的字元字串可以指定為兩個單引號,引號內不含任何字元。 零長度的二進位字串可以指定為 0x ,而不需在十六進位常數中指定的任何位元元組值。 串連長度為零的字串,一律會串連兩個指定的字串。

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