Herkese merhabalar bu yazımızda SQL Server kullanan geliştiriciler için case sensitive karşılaştırmaların nasıl yapılacağına değineceğim;
Bildiğiniz gibi MSSQL Server kurulumu esnasında Collation konfigürasyonunda herhangi bir ayarlama yapmaksızın default olarak kurduğunuz SQL Server ile oluşturduğunuz tablo verileri içerisinde çalıştırdığınız sorgular insensitive olarak çalışmaktadır. Bu durumda geliştirdiğimiz uygulamalar içerisinde parola doğruma noktasında sıkıntı yaratmaktadır.
MSSQL ile oluşturduğunuz tablolarda kolonlara göre sorgularınızın case sensitive/insensitive olarak çalışmasını kolaylıkla konfigüre edebilirsiniz. Bunun için ilgili tablonun Design modunda kolonun Collation ayarlarına gelerek Case Sensitive checkbox'ını seçili konuma getirmeniz yeterlidir.
Ancak sorgularınızın dinamik oluştuğu durumlarda veya SQL Server yönetiminin elinizde olmadığı durumlarda bu işlemleri T-SQL ile nasıl gerçekleştirebiliriz ona bakalım;
DECLARE @Name nvarchar(50)
SET @NAME = 'yasin'
select * from WebUsers where CAST(Name as binary)=CAST(@NAME as binary);
Burda kullandığımız method basitçe şöyle izah edilebilir. Hem Kolonda bulunan verileri hemde gönderdiğimiz parametreyi binary tipine dönüştürüyoruz. SQL Server'a ait bu karşılaştırmayı yapan CPU için büyük ve küçük karakterler farklı kod dizilimleri yaratacağından birbiriyle case sensitive olarak eşleşmeyen verilere ait sonuçlar dönmeyecektir.
kolay gelsin...