T-SQL'de Case Insensitive Sorunu

Bir T-SQL Like sorgusu yazarken gönderdiğim anahtar kelimenin karşılığını sorgu sonucunda göremiyordum. Problemin nedeni ise sorgumun case sensitive (büyük-küçük harf duyarlı) uyumuna göre sorgulamasından kaynaklanmaktaydı. Örnek olarak aşağıdaki gibi bir sorgu yazmıştım:

 SELECT * FROM urun WHERE urunadi LIKE '%ice%'

Normalde Ice ve ice kelimeleri içinde geçen kayıtları döndürmesi gerekirken sadece ice içeren kayıtlar sorgu sonucu olarak dönüyordu. Sorunun çözümü için sorgumun sonuna karakter setinin case insensitive versiyonunu belirtmem yeterlidir. Sorgum aşağıdaki şekilde olmuştur:

SELECT * FROM urun WHERE urunadi LIKE '%ice%' COLLATE sql_latin1_general_cp1_ci_as

Sizde sorgunun sonuna gelecek karakter setleri listelemek için aşağıdaki sorguyu kullanabilirsiniz.

SELECT * FROM fn_helpcollations() WHERE name LIKE 'Turkish%' AND name LIKE '%CI%'

CI yerine CS yazarsanız Case Sensitive (büyük-küçük harf duyarlı) karakter setlerini listelemiş olursunuz. CI ise Case Insensitive (büyük-küçük harf duyarsız) olmaktadır.