Aracılığıyla paylaş


= (Dize karşılaştırması veya atama)

Şunlar için geçerlidir:SQL ServerAzure SQL VeritabanıAzure SQL Yönetilen ÖrneğiAzure Synapse AnalyticsAnaliz Platformu Sistemi (PDW)Microsoft Fabric'teki SQL analiz uç noktasıMicrosoft Fabric'teki ambarMicrosoft Fabric'teki SQL veritabanı

Bir WHERE veya HAVING yan tümcesindeki iki dizeyi karşılaştırır veya denklemin sağ tarafındaki dize işleminin sonucu olarak bir değişken veya sütun ayarlar. Örneğin, bir değişken @x değerine eşitse'Adventure'WHERE @x = 'Adventure', öğesinin @x özgün değerini tam olarak dize değeriyle 'Adventure' karşılaştırır. Ayrıca işlecini = atama işleci olarak da kullanabilirsiniz. Örneğin, öğesini çağırabilirsiniz SET @a = 'AdventureWorks'.

Syntax

expression = expression

Arguments

expression

Resim, ntext veya metin veri türleri dışında karakter ve ikili veri türü kategorisindeki veri türlerinden herhangi birinin geçerli ifadelerini belirtir. her iki ifade de aynı veri türünde olmalıdır veya bir ifade örtük olarak diğer ifadenin veri türüne dönüştürülebilmelidir.

ile CONVERTkarakter verilerine açık dönüştürme veya CAST ikili dizeleri ve ikili dizeler arasındaki karakterleri karşılaştırırken veya atarken kullanılmalıdır.

Remarks

işlecini kullanan dize karşılaştırması = , her iki dizenin de aynı olduğunu varsayar. Kısmi dize karşılaştırma seçenekleri için LIKE işlecine veya CONTAINS ve CONTAINSTABLE tam metin koşullarına bakın.

SQL Server Veritabanı Altyapısı, dizeleri boşluklarla karşılaştırma konusunda ANSI/ISO SQL-92 belirtimini (Bölüm 8.2, Karşılaştırma Koşulu, Genel kurallar #3) izler. ANSI standardı, karşılaştırmalarda kullanılan karakter dizeleri için doldurma gerektirir, böylece uzunlukları karşılaştırmadan önce eşleşebilir. Doldurma, ve WHERE yan tümcesi koşullarının HAVING semantiğini ve diğer Transact-SQL dize karşılaştırmalarını doğrudan etkiler. Örneğin, Transact-SQL dizeleri 'abc' dikkate alır ve 'abc ' çoğu karşılaştırma işlemi için eşdeğerdir. Bu kuralın tek istisnası LIKE koşuludur. Koşul ifadesinin LIKE sağ tarafında sonunda boşluk olan bir değer olduğunda, Veritabanı Altyapısı karşılaştırma gerçekleşmeden önce iki değeri aynı uzunlukta doldurmaz. Koşulun LIKE amacı tanım gereği basit dize eşitliği testleri yerine desen aramalarını kolaylaştırmak olduğundan, bu koşul daha önce bahsedilen ANSI SQL-92 belirtiminin bölümünü ihlal etmez.

Bu ayar, SET ANSI_PADDING Veritabanı Altyapısı'nın dizeleri karşılaştırmadan önce sabitleyip doldurmadığını etkilemez. SET ANSI_PADDING yalnızca sondaki boşlukların tabloya eklenen değerlerden kırpılıp kırpılmadığını etkiler, bu nedenle depolamayı etkiler ancak karşılaştırmaları etkilemez.

Examples

A. WHERE yan tümcesindeki dizeleri karşılaştırma

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

B. İkiliden dönüştürmeyi kullanarak WHERE yan tümcesindeki dizeleri karşılaştırma

DECLARE @LNameBin BINARY (100) = 0x5A68656E67;

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

C. Değişkene dize ataması

Bu örnekte = işleci kullanılarak bir değişkene basit bir dize veri ataması gösterilmektedir.

DECLARE @dbname VARCHAR(100);

SET @dbname = 'Adventure';

D. Boşluklarla dize karşılaştırması

Aşağıdaki sorgular, bir tarafın boşluk içerdiği ve diğerinin içermediği dizeler arasındaki karşılaştırmayı gösterir:

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

Sonraki Adımlar