Bagikan melalui


= (Perbandingan string atau penugasan)

Berlaku untuk:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse Analytics AnalyticsPlatform System (PDW)Titik akhir analitik SQL di Microsoft FabricWarehouse di Microsoft Fabric

Membandingkan dua string dalam WHERE klausa atau HAVING mengatur variabel atau kolom ke string atau hasil operasi string di sisi kanan persamaan. Misalnya, jika variabel @x sama dengan 'Adventure', maka WHERE @x = 'Adventure' membandingkan nilai @x asli sama dengan nilai 'Adventure' string dengan persis. Anda juga dapat menggunakan = operator sebagai operator penugasan. Misalnya, Anda dapat memanggil SET @a = 'AdventureWorks'.

Sintaks

expression = expression

Argumen

expression

Menentukan ekspresi yang valid dari salah satu jenis data dalam kategori jenis data karakter dan biner, kecuali jenis data 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.

Konversi eksplisit ke data karakter dengan CONVERT, atau CAST harus digunakan saat membandingkan atau menetapkan string biner dan karakter apa pun di antara string biner.

Keterangan

Perbandingan = string menggunakan operator mengasumsikan bahwa kedua string identik. Untuk opsi perbandingan string parsial, lihat operator LIKE , atau predikat teks lengkap CONTAINS dan CONTAINSTABLE .

Mesin Database SQL Server mengikuti spesifikasi ANSI/ISO SQL-92 (Bagian 8.2, Predikat Perbandingan, Aturan umum #3) tentang cara membandingkan string dengan spasi. Standar ANSI memerlukan padding untuk string karakter yang digunakan dalam perbandingan sehingga panjangnya cocok sebelum membandingkannya. Padding secara langsung memengaruhi semantik predikat klausul WHERE dan HAVING dan perbandingan string Transact-SQL lainnya. Misalnya, Transact-SQL mempertimbangkan string 'abc' dan 'abc ' setara untuk sebagian besar operasi perbandingan. Satu-satunya pengecualian untuk aturan ini adalah predikat LIKE. Saat sisi kanan ekspresi predikat menampilkan LIKE nilai dengan spasi berikutnya, Mesin Database tidak mengalihkan dua nilai dengan panjang yang sama sebelum perbandingan terjadi. Karena tujuan LIKE predikat, menurut definisi, adalah untuk memfasilitasi pencarian pola daripada pengujian kesetaraan string sederhana, predikat ini tidak melanggar bagian spesifikasi ANSI SQL-92 yang disebutkan sebelumnya.

Pengaturan SET ANSI_PADDING tidak memengaruhi apakah database Engine pads strings sebelum membandingkannya. SET ANSI_PADDING hanya memengaruhi apakah kosong berikutnya dipangkas dari nilai yang dimasukkan ke dalam tabel, sehingga memengaruhi penyimpanan tetapi bukan perbandingan.

Contoh

J. Membandingkan string dalam klausa WHERE

SELECT LastName,
    FirstName
FROM Person.Person
WHERE LastName = 'Johnson';

B. Membandingkan string dalam klausul WHERE menggunakan konversi dari biner

DECLARE @LNameBin BINARY (100) = 0x5A68656E67;

SELECT LastName,
    FirstName
FROM Person.Person
WHERE LastName = CONVERT(VARCHAR, @LNameBin);

C. Penetapan string ke variabel

Contoh ini mengilustrasikan penetapan sederhana data string ke variabel menggunakan operator = .

DECLARE @dbname VARCHAR(100);

SET @dbname = 'Adventure';

D. Perbandingan string dengan spasi

Kueri berikut mengilustrasikan perbandingan antara string di mana satu sisi berisi spasi dan yang lain tidak:

CREATE TABLE #tmp (c1 VARCHAR(10));
GO

INSERT INTO #tmp VALUES ('abc ');

INSERT INTO #tmp VALUES ('abc');
GO

SELECT DATALENGTH(c1) AS 'EqualWithSpace', * FROM #tmp
WHERE c1 = 'abc ';

SELECT DATALENGTH(c1) AS 'EqualNoSpace  ', * FROM #tmp
WHERE c1 = 'abc';

SELECT DATALENGTH(c1) AS 'GTWithSpace   ', * FROM #tmp
WHERE c1 > 'ab ';

SELECT DATALENGTH(c1) AS 'GTNoSpace     ', * FROM #tmp
WHERE c1 > 'ab';

SELECT DATALENGTH(c1) AS 'LTWithSpace   ', * FROM #tmp
WHERE c1 < 'abd ';

SELECT DATALENGTH(c1) AS 'LTNoSpace     ', * FROM #tmp
WHERE c1 < 'abd';

SELECT DATALENGTH(c1) AS 'LikeWithSpace ', * FROM #tmp
WHERE c1 LIKE 'abc %';

SELECT DATALENGTH(c1) AS 'LikeNoSpace   ', * FROM #tmp
WHERE c1 LIKE 'abc%';
GO

DROP TABLE #tmp;
GO

Langkah berikutnya