Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Şunlar için geçerlidir:SQL Server
Azure SQL Veritabanı
Azure SQL Yönetilen Örneği
Azure Synapse Analytics
Analiz Platformu Sistemi (PDW)
Microsoft Fabric'teki SQL analiz uç noktası
Microsoft Fabric'teki ambar
Microsoft 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