+ (Perangkaian String) (Transact-SQL)

Berlaku untuk:yes SQL Server (semua versi yang didukung) YesAzure SQL Database YesAzure SQL Managed Instance yesAzure Synapse Analytics Analytics yesPlatform System (PDW)

Operator dalam ekspresi string yang menggabungkan dua karakter atau lebih atau string biner, kolom, atau kombinasi string dan nama kolom menjadi satu ekspresi (operator string). Misalnya SELECT 'book'+'case'; mengembalikan bookcase.

Topic link iconKonvensi Sintaksis T-SQL

Sintaks

expression + expression  

Catatan

Untuk melihat sintaks Transact-SQL untuk SQL Server 2014 dan yang lebih lama, lihat Dokumentasi versi sebelumnya.

Argumen

ekspresi
Adalah ekspresi valid dari salah satu jenis data dalam kategori jenis data karakter dan biner, kecuali jenis data gambar, ntext, atau teks . Kedua ekspresi harus dari jenis data yang sama, atau satu ekspresi harus dapat dikonversi secara implisit ke jenis data ekspresi lainnya.

Konversi eksplisit ke data karakter harus digunakan saat menggabungkan string biner dan karakter apa pun di antara string biner. Contoh berikut menunjukkan kapan CONVERT, atau CAST, harus digunakan dengan perangkaian biner dan ketika CONVERT, atau CAST, tidak harus digunakan.

DECLARE @mybin1 VARBINARY(5), @mybin2 VARBINARY(5)  
SET @mybin1 = 0xFF  
SET @mybin2 = 0xA5  
-- No CONVERT or CAST function is required because this example   
-- concatenates two binary strings.  
SELECT @mybin1 + @mybin2  
-- A CONVERT or CAST function is required because this example  
-- concatenates two binary strings plus a space.  
SELECT CONVERT(VARCHAR(5), @mybin1) + ' '   
   + CONVERT(VARCHAR(5), @mybin2)  
-- Here is the same conversion using CAST.  
SELECT CAST(@mybin1 AS VARCHAR(5)) + ' '   
   + CAST(@mybin2 AS VARCHAR(5))  

Tipe Hasil

Mengembalikan jenis data argumen dengan prioritas tertinggi. Untuk informasi selengkapnya, lihat Prioritas Tipe Data (Transact-SQL).

Keterangan

Operator + (String Concatenation) 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 apa pun yang ditentukan dalam konstanta heksadesimal. Menggabungkan string panjang nol selalu menggabungkan dua string yang ditentukan. Saat Anda bekerja dengan string dengan nilai null, hasil perangkaian bergantung pada pengaturan sesi. Sama seperti operasi aritmatika yang dilakukan pada nilai null, ketika nilai null ditambahkan ke nilai yang diketahui, hasilnya biasanya merupakan nilai yang tidak diketahui, operasi perangkaian string yang dilakukan dengan nilai null juga harus menghasilkan hasil null. Namun, Anda dapat mengubah perilaku ini dengan mengubah pengaturan CONCAT_NULL_YIELDS_NULL untuk sesi saat ini. Untuk informasi selengkapnya, lihat SET CONCAT_NULL_YIELDS_NULL (Transact-SQL).

Jika hasil perangkaian untai (karakter) melebihi batas 8.000 byte, hasilnya akan dipotok. Namun, jika setidaknya salah satu string yang digabungkan adalah jenis nilai yang besar, pemotokan tidak terjadi.

Contoh

A. Menggunakan perangkaian string

Contoh berikut membuat satu kolom di bawah judul Name kolom dari beberapa kolom karakter, dengan nama belakang orang tersebut diikuti dengan koma, spasi tunggal, lalu nama depan orang tersebut. Tataan hasil dalam urutan naik, alfabet dengan nama belakang, lalu dengan nama depan.

-- Uses AdventureWorks  
  
SELECT (LastName + ', ' + FirstName) AS Name  
FROM Person.Person  
ORDER BY LastName ASC, FirstName ASC;  

B. Menggabungkan jenis data numerik dan tanggal

Contoh berikut menggunakan CONVERT fungsi untuk menggabungkan jenis data numerik dan tanggal .

-- Uses AdventureWorks  
  
SELECT 'The order is due on ' + CONVERT(VARCHAR(12), DueDate, 101)  
FROM Sales.SalesOrderHeader  
WHERE SalesOrderID = 50001;  
GO  

Berikut adalah hasil yang ditetapkan.

------------------------------------------------  
The order is due on 04/23/2007  
(1 row(s) affected)

C. Menggunakan beberapa perangkaian string

Contoh berikut menggabungkan beberapa string untuk membentuk satu string panjang untuk menampilkan nama belakang dan awal pertama wakil presiden di Adventure Works Cycles. Koma ditambahkan setelah nama belakang dan titik setelah awal pertama.

-- Uses AdventureWorks  
  
SELECT (LastName + ',' + SPACE(1) + SUBSTRING(FirstName, 1, 1) + '.') AS Name, e.JobTitle  
FROM Person.Person AS p  
    JOIN HumanResources.Employee AS e  
    ON p.BusinessEntityID = e.BusinessEntityID  
WHERE e.JobTitle LIKE 'Vice%'  
ORDER BY LastName ASC;  
GO  

Berikut adalah hasil yang ditetapkan.

Name               Title  
-------------      ---------------`  
Duffy, T.          Vice President of Engineering  
Hamilton, J.       Vice President of Production  
Welcker, B.        Vice President of Sales  

(3 row(s) affected)

D. Menggunakan string besar dalam perangkaian

Contoh berikut menggabungkan beberapa string untuk membentuk satu string panjang lalu mencoba menghitung panjang string akhir. Panjang akhir resultset adalah 16000, karena evaluasi ekspresi dimulai dari kiri yaitu, @x + @z + @y => (@x + . @z) + @y Dalam hal ini hasil (@x + @z) dipotok pada 8000 byte dan kemudian @y ditambahkan ke resultset, yang membuat panjang string akhir 16000. Karena @y adalah string jenis nilai besar, pemotokan tidak terjadi.

DECLARE @x VARCHAR(8000) = REPLICATE('x', 8000)
DECLARE @y VARCHAR(max) = REPLICATE('y', 8000)
DECLARE @z VARCHAR(8000) = REPLICATE('z',8000)
SET @y = @x + @z + @y
-- The result of following select is 16000
SELECT LEN(@y) AS y
GO

Berikut adalah hasil yang ditetapkan.

y        
-------  
16000  
 
(1 row(s) affected)

Contoh: Azure Synapse Analytics and Analytics Platform System (PDW)

E. Menggunakan beberapa perangkaian string

Contoh berikut menggabungkan beberapa string untuk membentuk satu string panjang untuk menampilkan nama belakang dan inisial pertama wakil presiden dalam database sampel. Koma ditambahkan setelah nama belakang dan titik setelah awal pertama.

-- Uses AdventureWorks  
  
SELECT (LastName + ', ' + SUBSTRING(FirstName, 1, 1) + '.') AS Name, Title  
FROM DimEmployee  
WHERE Title LIKE '%Vice Pres%'  
ORDER BY LastName ASC;  

Berikut adalah hasil yang ditetapkan.

Name               Title                                           
-------------      ---------------  
Duffy, T.          Vice President of Engineering  
Hamilton, J.       Vice President of Production  
Welcker, B.        Vice President of Sales  

Lihat juga

+= (Penetapan Perangkaian String) (Transact-SQL)
MENGUBAH DATABASE (T-SQL)
CAST dan CONVERT (Transact-SQL)
Konversi Tipe Data (Mesin Database)
Jenis Data (Transact-SQL)
Ekspresi (Transact-SQL)
Fungsi Bawaan (Transact-SQL)
Operator (Transact-SQL)
SELECT (Transact-SQL)
Pernyataan SET (Transact-SQL)