Bagikan melalui


||= (Penetapan majemuk) (Transact-SQL)

Berlaku untuk: Database SQL SQL Server 2025 (17.x) Azure SQL DatabaseAzure SQL Managed Instancedi Microsoft Fabric

Perangkaian ||= dengan operator penetapan majemuk dapat digunakan untuk menggabungkan ekspresi dengan nilai karakter atau variabel string biner, lalu menetapkan ekspresi yang dihasilkan ke variabel.

Operator ||= mendukung perilaku yang sama dengan operator += untuk karakter dan string biner.

Konvensi sintaks transact-SQL

Syntax

variable ||= expression

Arguments

variable

Variabel T-SQL dari jenis karakter: char, varchar, nchar, nvarchar, varchar(max), atau nvarchar(max), atau jenis biner: biner atau varbinary atau varbinary(max).

expression

Karakter atau ekspresi biner. Jika ekspresi bukan dari jenis karakter, maka jenis ekspresi harus dapat dikonversi secara implisit menjadi string karakter.

Tipe pengembalian

Menetapkan hasil operator perangkaian untuk string karakter ke variabel.

  • Jika variabel atau ekspresi adalah nilai SQL NULL , maka hasil ekspresi yang digabungkan adalah NULL.
  • Jika variabel adalah jenis data objek besar (LOB) (varchar(maks) atau nvarchar(maks)), maka ekspresi yang dihasilkan adalah varchar(maks) atau nvarchar(maks).
  • Jika variabel berjenis LOB varbinary(max), maka ekspresi yang dihasilkan adalah varbinary(max).
  • Jika variabel bukan jenis LOB, maka hasilnya dipotong ke panjang maksimum jenis variabel yang dideklarasikan.

Remarks

Jika hasil perangkaian string melebihi batas 8.000 byte, hasilnya dipotong. Namun, jika setidaknya salah satu string yang digabungkan adalah jenis nilai yang besar, pemotongan tidak terjadi.

Konversi eksplisit ke data karakter harus digunakan saat menggabungkan string biner dan karakter apa pun di antara string biner.

Operator ||= pipa tersedia di Azure SQL Managed Instance dengan kebijakan pembaruanSQL Server 2025 atau Always-up-to-date.

String dan karakter panjang nol

Operator ||= (perangkaian string) berakibat berbeda ketika bekerja dengan string kosong dengan panjang nol daripada saat bekerja dengan NULL, atau nilai yang tidak diketahui. String karakter panjang nol dapat ditentukan sebagai dua tanda kutip tunggal tanpa karakter apa pun di dalam tanda kutip. String biner panjang nol dapat ditentukan sebagai 0x tanpa nilai byte yang ditentukan dalam konstanta heksadesimal. Menggabungkan string panjang nol selalu menggabungkan dua string yang ditentukan.

Perangkaian nilai NULL

Seperti halnya operasi aritmatika yang dilakukan pada NULL nilai, ketika NULL nilai ditambahkan ke nilai yang diketahui, hasilnya biasanya merupakan NULL nilai. Operasi penggalian string yang NULL dilakukan dengan nilai juga harus menghasilkan NULL hasil.

Operator ||= tidak mematuhi SET CONCAT_NULL_YIELDS_NULL opsi, dan selalu bereaksi seolah-olah perilaku ANSI SQL diaktifkan, menghasilkan NULL jika salah satu input adalah NULL. Ini adalah perbedaan utama dalam perilaku antara += operator dan ||= perangkaian. Untuk informasi selengkapnya, lihat MENGATUR CONCAT_NULL_YIELDS_NULL.

Examples

A. Menggunakan perangkaian dengan penetapan majemuk untuk string

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

Berikut set hasilnya.

ab

B. Menggunakan perangkaian dengan penetapan majemuk untuk data biner

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

Berikut set hasilnya.

0x1A2B