SQL_Latin1_General_CP1_CI_AS İle Türkçe Karakterle Arama Yapmak

.Net platformunu eskiden Mysql ile kullanırdım. Hiç sorun yaşamadan birkaç tane büyük projeyi bitirdim. Son projemde iş verenim, veritabanı olarak Microsoft Sql Server ile yapmamı isteyince, bende Microsoft Sql Server öğrenmeye başladım. Diğer veritabanlarından kullanım açısından herhangi bir farkı yok. Bu yüzden öğrenme de zorluk çekmedim. Fakat ilerleyen zamanlarda büyük problemlerle karşılaşmaya başladım.

Proje tam bitmek üzereyken veritabanını test amaçlı internete yüklemeye çalıştım.  Fakat mysql gibi kolay ve hızlı bir şekilde gerçekleşmedi bu süreç.

Çünkü doğrudan sunucu üzerinde bir şey yapamıyordum. (VPS olmasına rağmen).

Sunucu 4 kere çöktü ve çökmesinin sebebi Sql Server’dan sorumlu birimin, Plesk Panel olmasıydı. Ondan habersiz yaptığım her işlemde Plesk Panel, Sql Server’ı devre dışı bırakıyordu.

Veritabanı kendi çalıştığım makinemde Collation Turkish_CI_AS olmasına rağmen, internete yüklediğimde Collation SQL_Latin1_General_CP1_CI_AS olmuştu.

Projeye bu şekilde devam ederken aramalarda problemler yaşadığımı, Türkçe karakterlerin şekil değiştirdiği dikkatimi çekti. (İ harfi I, Ç harfi C gibi..)

Nvarchar tipinin Utf8 desteklediğini bildiğimden hemen alanlarımı nvarchar tipine dönüştürdüm. Bu şekilde Türkçe karakter problemini görsel olarak aşmıştım.

Bir diğer hata, Türkçe karakter aramalarında sonuçların boş döndürdüğünü farkettim.

İşte asıl problemi burada yaşadım. Neredeyse yazılmış tüm Ingilizce ve Türkçe sorunları ve problemleri araştırdım. Ama  sonuç nafile.

Sonra son anda aklıma gelen basit bir yöntemle çözdüm.

Eğer alanınızın Collation değeri SQL_Latin1_General_CP1_CI_AS ise yapmanız gereken arama yapılacak olan alanın Collation değerini Turkish_CI_AS yapmaktır.

Aşamaları resimli olarak sizinle paylaşıyorum.

İlgili Alanı Sağ Tıklayıp Düzenle Diyoruz

İlgili Alanı Seçip, Table Designer Düğümünde ki Collation Bölümüne Geliyoruz

İstersek Collation Değerini Panel Üzerinden de Değiştirebiliyoruz

Düzenlemeleri Görsel Olarak da Yapabiliriz

Uygulayıp sonuç alamadığım bazı yöntemleri aşağıda sizinle paylaşıyorum. Belki bu aşamalardan birisi size yardımcı olur.

  • Veritabanı Collation değiştirme. (Plesk genelde izin vermiyor).
  • Tablo Collation değiştirme. (Plesk genelde buna da izin vermiyor).
  • ***Alan Collation değiştirme. (İşte bu benim bulduğum yöntem. Bu değiştirmeye, ne hikmetse izin veriyor. Bu şekilde aramayı doğru yapabiliyoruz)
  • Sorgu üzerinde Collate komutunu kullanmak.

Örneğin :

Select * From tblOgrenciler Where adSoyad Like “%Ayşe%”

yerine

Select * From tblOgrenciler Where adSoyad Like ‘%Ayşe%’ COLLATE SQL_Latin1_General_CP1_CI_AS

  • Encoding sınıfı ile arama yapılacak kelimeleri farklı farklı tiplere dönüştürmek ve arama yapmak.

Herkese İyi Çalışmalar.

This entry was posted in Microsoft Sql Server and tagged , , , , , , , , . Bookmark the permalink.

Leave a Reply

Your email address will not be published. Required fields are marked *