Dizeleri nasıl karşılaştırırsınız, böylece karşılaştırma yalnızca dizelerin her birinin durumu da eşitse doğrudur. Örneğin:
Select * from a_table where attribute = 'k'
... 'K' özelliğine sahip bir satır döndürür. Bu davranışı istemiyorum.
Dizeleri nasıl karşılaştırırsınız, böylece karşılaştırma yalnızca dizelerin her birinin durumu da eşitse doğrudur. Örneğin:
Select * from a_table where attribute = 'k'
... 'K' özelliğine sahip bir satır döndürür. Bu davranışı istemiyorum.
Yanıtlar:
Select * from a_table where attribute = 'k' COLLATE Latin1_General_CS_AS
Hile yaptı.
Latin1_General_CS_AS
harmanlamanın bir özelliğidir. Harmanlama, verilerin nasıl sıralanacağını ve karşılaştırılacağını belirleyen bir dizi kuralı ifade eder. Daha fazla bilgi için bu sayfaya bakın .
Bu sözdizimini kullanarak bu özelliği büyük / küçük harfe duyarlı olarak da dönüştürebilirsiniz :
ALTER TABLE Table1
ALTER COLUMN Column1 VARCHAR(200)
COLLATE SQL_Latin1_General_CP1_CS_AS
Şimdi aramanız büyük / küçük harfe duyarlı olacaktır .
Bu sütun durumunu tekrar duyarsız hale getirmek istiyorsanız şunu kullanın:
ALTER TABLE Table1
ALTER COLUMN Column1 VARCHAR(200)
COLLATE SQL_Latin1_General_CP1_CI_AS
Sütunları kolayca VARBINARY (Maks. Uzunluk) biçimine dönüştürebilirsiniz, Uzunluk, hatalı karşılaştırmayı önlemek için beklediğiniz maksimum olmalıdır, Uzunluğu sütun uzunluğu olarak ayarlamak yeterlidir. Döşeme sütunu, alanın bir anlamı ve tablo sütunlarınızda değerli olması dışında gerçek değeri karşılaştırmanıza yardımcı olur.
CONVERT(VARBINARY(250),LTRIM(RTRIM(Column1))) = CONVERT(VARBINARY(250),LTRIM(RTRIM(Column2)))
Umarım bu yardım.
Başka bir alternatif olarak HASHBYTES'i kullanabilirsiniz, şöyle bir şey:
SELECT *
FROM a_table
WHERE HASHBYTES('sha1', attribute) = HASHBYTES('sha1', 'k')