Jump to content

Case Insensitive Sql Server'da Case Sensitive


wmismail

Recommended Posts

Case Insensitive SQL Server'da Case Sensitive Arama Yapmak

Bu yazıda Case Insensitive (Büyük küçük harf ayrımı yapmayan) collation ile çalışan SQL Server üzerinde Case Sensitive (Büyük küçük harf ayrımı yapan) sorgu oluşturma hakkında bilgi vereceğim.

SQL Server kurulumlarında collation ayrarı varsayılan olarak büyük küçük harfe duyarsız şekilde karşımıza gelmektedir. Pratiktede SQL Server'ı büyük küçük harf ayrımı yapmadan kurmak ve kullanmak arama sorgularımız için daha efektiftir. Fakat bazı durumlarda yaptığımız sorguların büyük küçük harfe duyarlı çalışmasını isteyebiliriz.

Örneğin, veritabanımızda bulunan Sehirler tablosunun Sehir alanı içerisinde (I) harfi geçen kayıtları bulmak istediğimizde aşağıdaki gibi bir sorgu yazabiliriz.

SELECT Sehir FROM Sehirler WHERE Sehir like '%I%'[/CODE]

Yukarıdaki sorguyu çalıştırdığımızda içerisinde (I ve ı) geçen bütün şehirler sorgu sonucu olarak karşımıza gelecektir. (Adıyaman, Ağrı, Aydın, Balıkesir, Bartın, Çankırı, Diyarbakır, Elazığ, Iğdır, Kırıkkale, Kırklareli, Kırşehir, Şanlıurfa, Şırnak, Isparta)

Bu sorguda SQL Server Collation'u büyük küçük harfe duyarsız olduğu için sonuç olarak bize hem (I) hem de (ı) geçen kayıtları geri döndürdü. Fakat bazen içerisinde sadece (I) büyük harf I geçen kayıtların sorgu sonucunda geri döndürülmesini isteyebiliriz, işte bu durumda imdadımıza T-SQL'in COLLATE komutu yetişiyor.

SQL Server'da kullandığımız mevcut collation'ı

[CODE]SELECT SERVERPROPERTY ('Collation')[/CODE]

sorgusu ile öğrenebiliriz. Ben bu sorguyu çalıştırdığımda sunucumun collation ayarının Turkish_CI_AS olduğunu gördüm. Collation tanımında Turkish_ ibaresinden sonra gelen CI harfleri Case Insensitive yani büyük küçük harf ayrımı yapılmayan bir collation kullanıldığını göstermektedir.

Çalıştırdığımız sorguyu aşağıdaki şekilde değiştirirsek Sehir alanında SQL Server büyük küçük harfe duyarlı olarak arama yapacak ve sorgunun sonucunu buna göre döndürecektir.

[CODE]SELECT Sehir FROM Sehirler WHERE Sehir like '%I%' COLLATE Turkish_CS_AS[/CODE]

Birinci sorgumuzdan farklı olarak Sehir like '%I%' ifadesinin sonuna eklediğimiz COLLATE Turkish_CS_AS komutu ile Sehir alanında yapılacak aramanın Turkish_CS_AS collation'una göre yapılacağını bildirmiş oluyoruz.

Collation tanımı içerisinde yer alan CS harfleri Case Sensitive yani büyük küçük harfe duyarlı bir collation kullanıldığını göstermektedir.

Sorguyu bu şekilde çalıştırdığımızda ise sonuç olarak sadece (I) büyük harf I geçen (Iğdır ve Isparta) kayıtları geri dönüyor.

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.

  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...