SQL Server Türkçe Karakter Problemi

sql server MSSQL’de eğer databasimizin collation’u Turkish_CI_AS seçilmemişse insert yaparken türkçe karakter problemi yaşamamız mümkün. Eğer veritabanınız GoDaddy gibi yurtdışında bulunan bir hosting firmasında bulunuyorsa collation default olarak Latin1 seçilmiş olabiliyor. Bunu değiştirme yetkiniz yoksa, insert ve update yaparken stringlerimizi unicode olarak göndermemiz gerekli.

Stringleri unicode olarak göndermek için başına büyük N harfi koymamız gerekli.  Bu şekilde gönderilen tüm karakter setleri unicode olarak kaydedilecektir. Bu sayede türkçe karakterlerimiz korunmuş olacaktır.

INSERT INTO dbo.Kitaplar (yazar) VALUES(N’DEITEL’);
Reklamlar

SQL Server Tekrarlanan Satırları Silmek

Sql Server Tekrarlanan satırları silme SQL Server‘da tekrarlanan satırları hızlı bir şekilde silmek için aşağıdaki yöntemi kullanabilirsiniz. Örnek olarak aşağıdaki kod da aynı kişinin puanının birden fazla kez veritabanına kaydedildiğini düşünelim. Yani aynı satırdan birden fazla olduğunu varsayalım, bu aynı satırlardan en eski olanı sistemimizde tutmak istiyorum. Hangisinin eski olduğuna karar vermek için unique olarak tuttuğum id’sinden faydalanacağım. Kısaca id’si küçük olan benim için eklenen en eski kayıttır.

Burada ilk olarak Min() fonksiyonunu kullanarak o kayıttan minimum id’li olan farklı değerlerin id’sini ismine göre group by yaparak çekiyorum. Sonrasında bu idlerin dışında kalan satırları not in ile seçerek siliyorum.

DELETE FROM puanlar WHERE id NOT IN
(SELECT Min(id) FROM puanlar GROUP BY isim)

Eğer en eski yerine en yeni satırı saklamak istersek Min() yerine Max() fonksiyonunu kullanabiliriz.

SQL Server Aramalarda Contains Kullanımı

Büyük çaplı aramalarımızda daha hızlı sonuç alabilmek için Contains() kullanabiliriz.

Select Col1, Col2 from table where CONTAINS(Col1, ‘Kelime’);

Aramalarımız da AND kullanarak birden fazla kelimenin aranmasını da sağlayabiliriz.

Select Col1, Col2 from table where CONTAINS(Col1, ‘Kelime1 AND Kelime2’);

Bir cumledeki tum kelimeler için arama yapmak istersek string sınıfının Trim() methodundan yararlanabiliriz.

WHERE CONTAINS(*, ‘” +Cumle.Trim().Replace(” “, ” AND “) + “‘)

C# Query’den Tek Bir İnteger Döndürmek

Database’imiz bağlandıktan sonra toplam gibi tek bir integer değer döndürmek istediğimizde ExecuteScalar() methodunu kullanıyoruz.


SqlConnection con = new SqlConnection(".........................");
con.Open();

query404 = "select count(*) from Errors where datetime >='" + dateFormat(date) + "' AND datetime<'" + dateFormat(dateEx) + "' and error=404 ";
query500 = "select count(*) from Errors where datetime >='" + dateFormat(date) + "' AND datetime<'" + dateFormat(dateEx) + "' and error=500 ";

SqlCommand cmd404 = new SqlCommand(query404, con);
SqlCommand cmd500 = new SqlCommand(query500, con);

int er404 = (int)cmd404.ExecuteScalar();
int er500= (int)cmd500.ExecuteScalar();

con.Close();