|| (Penggalian string) (T-SQL)
Berlaku untuk: Azure SQL Database
Operator ||
pipa dalam ekspresi string menggabungkan dua karakter atau lebih atau string biner, kolom, atau kombinasi string dan nama kolom ke dalam satu ekspresi (operator string). Misalnya, SELECT 'SQL ' || 'Server';
mengembalikan SQL Server
.
Sintaks
expression || expression
Argumen
expression
Ekspresi valid apa pun dari salah satu jenis data dalam kategori jenis data karakter dan biner, kecuali jenis data xml, json, gambar, ntext, atau teks. Kedua ekspresi harus memiliki jenis data yang sama, atau satu ekspresi harus dapat dikonversi secara implisit menjadi jenis data dari ekspresi lainnya.
Jenis yang dikembalikan
Mengembalikan tipe data argumen dengan prioritas tertinggi. Untuk informasi selengkapnya, lihat Prioritas jenis data.
Keterangan
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.
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.
Penggunaan CAST dan CONVERT jika perlu
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.
Dalam contoh ini, tidak ada CONVERT
atau CAST
fungsi yang diperlukan karena contoh ini menggabungkan dua string biner.
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
Dalam contoh ini, fungsi CONVERT
atau CAST
diperlukan karena contoh ini menggabungkan dua string biner ditambah spasi.
DECLARE @mybin1 VARBINARY(5), @mybin2 VARBINARY(5);
SET @mybin1 = 0xFF;
SET @mybin2 = 0xA5;
-- 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));
Contoh
Sampel kode Transact-SQL dalam artikel ini menggunakan AdventureWorks2022
database sampel atau AdventureWorksDW2022
, yang dapat Anda unduh dari halaman beranda Sampel Microsoft SQL Server dan Proyek Komunitas.
J. Menggunakan perangkaian string
Contoh berikut membuat kolom tunggal di bawah judul Name
kolom dari beberapa kolom karakter, dengan nama keluarga (LastName
) orang tersebut diikuti dengan koma, spasi tunggal, lalu nama depan (FirstName
) orang tersebut. Hasil yang ditetapkan adalah dalam urutan naik, alfabet dengan nama keluarga, dan kemudian dengan nama depan.
SELECT (LastName || ', ' || FirstName) AS Name
FROM Person.Person
ORDER BY LastName ASC, FirstName ASC;
B. Menggabungkan tipe data numerik dan tanggal
Contoh berikut menggunakan CONVERT
fungsi untuk menggabungkan jenis data numerik dan tanggal .
SELECT 'The order is due on ' || CONVERT(VARCHAR(12), DueDate, 101)
FROM Sales.SalesOrderHeader
WHERE SalesOrderID = 50001;
GO
Berikut set hasilnya.
------------------------------------------------
The order is due on 04/23/2007
C. Menggunakan beberapa perangkaian string
Contoh berikut menggabungkan beberapa string untuk membentuk satu string panjang untuk menampilkan nama keluarga dan awal pertama wakil presiden di Adventure Works Cycles. Koma ditambahkan setelah nama keluarga dan titik setelah awal pertama.
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 set hasilnya.
Name Title
------------- ---------------`
Duffy, T. Vice President of Engineering
Hamilton, J. Vice President of Production
Welcker, B. Vice President of Sales
D. Menggunakan string besar dalam perangkaian
Contoh berikut menggabungkan beberapa string untuk membentuk satu string panjang lalu mencoba menghitung panjang string akhir. Panjang akhir tataan hasil adalah 16.000, karena evaluasi ekspresi dimulai dari kiri yaitu, @x
@y
+ @z
+ => (@x + @z
) + . @y
Dalam hal ini, hasil (@x
+ @z
) dipotong pada 8.000 byte, dan kemudian @y
ditambahkan ke kumpulan hasil, yang membuat panjang string akhir 16.000. Karena @y
adalah string jenis nilai besar, pemotongan 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 set hasilnya.
y
-------
16000
Konten terkait
- ||= (Penetapan majemuk) (Transact-SQL)
- + (Perangkaian string) (Transact-SQL)
- += (Penetapan Penggalian String) (Transact-SQL)
- MENGUBAH DATABASE (T-SQL)
- CAST dan CONVERT (Transact-SQL)
- Konversi jenis data (Mesin Database)
- Jenis data (Transact-SQL)
- Ekspresi (Transact-SQL)
- Fungsi Bawaan (Transact-SQL)
- Operator (Transact-SQL)
- SELECT (Transact-SQL)
- Pernyataan SET (Transact-SQL)