T-SQL ile newID, Soundex, Case ve Substring kullanımı

Bazı işlemler vardır kod yazmaya kalkınca dünya kadar satır yazmanız gerekir, halbuki zaman zaman Sql in nimetlerinden yararlanmak olayları bir çırpıda performanslı bir şekilde çözmek anlamına geliyor. Bu nimetleri birer örnekle açıklamaya çalışayım.

NewID() herzaman heryerdeki fiks sorulardan biridir, veritabanından rastgele nasıl veri çekerim veya veri kümesinin içinden rastgele x kadar kaydı nasıl çekerim gibi.. satır satır kod yazmak yerine newId fonksiyonunu kullanabilirsiniz.

Örnek;

        Select * From TabloAdi order By NewID() -- tablodaki tüm kayıtları rastgele getirir.
	Select Top 5 * From TabloAdi order By NewID() -- tablodaki tüm kayıtlar içerisinden 5 tanesini rastgele listeler.

Soundex() Esasında çok kabarık bir konu, en özet haliyle yanlış yazımların önüne geçmek için oluşturulmuş bir algoritma. Buradan detaylarına bakabilirsiniz. Google’ nin Bunu mu demek istediniz?mekanızması bunun en iyi örneklerinden biridir. Google’ nin ki kadar gelişmiş olmasada, hiç yoktan sitenizde kullanabileceğiniz bu sistemi Soundex ile birlikte yapabilirsiniz. Mesela Abdullah kelimesini aratırken yanlışlıkla Abdullak yada Abdullaah yazdığımızda klasik arama yöntemi olan Like ile kayıt boş dönecektir, halbuki soundex kullandığımızda Abdullah kelimesini bulmamız mümkün.

SELECT * FROM TabloAdi WHERE SOUNDEX('kelime') = SOUNDEX(AlanAdi)

Case Sql cümlemizin içinde if kullanımının neredeyse birebir aynını bu şekilde kullanabiliriz. Amacımız elimeze geçen kaydın tam istediğimiz şekilde olması, sql cümlemizden gelen veriyi direk grid veya benzeri bir nesnede listelememizde çok daha verimli olacaktır.

-- sadece if else şeklinde kullanım
SELECT
	Case
		When Adsoyad='Abdullah UĞRAŞKAN' Then 'Tamamdır :)'
	else 'Kimsin sen ?'
	end as 'Sonuc'
FROM
	kullanicilar

-- if elseif else şeklinde kullanım
SELECT
	Case
		When Adsoyad='Abdullah UĞRAŞKAN' Then 'Tamamdır :)'
	    When AdSoyad='Deneme' Then 'Sende Tamam ol :)'
	else 'Kimsin sen ?'
	end as 'Sonuc'
FROM
	kullanicilar

-- eğer koşul gerçekleşirse sonucu diğer tablodan almaya ilişkin bir örnek. Yani eğer adısoyadı abdullah ise görevinin ne olduğunu döndürüyoruz.
SELECT
	Case
		When Adsoyad='Abdullah UĞRAŞKAN' Then (Select gorev from gorevler where id=kullanicilar.gorevid)
	else 'Görevsiz.'
	end as 'Sonuc'
FROM
	kullanicilar

-- örnekler biraz bencil olabilir ama aklıma başka bişiy gelmedi :)

SubString Kaydın başlangıç ve bitişini belirleyebildiğimiz klasik substring fonksiyonun aynısı. Kaydın istediğimiz kısmını görüntülememize olanak sağlan fonksiyonumuz.

select Substring(AlanAdi,1,10) from TabloAdi -- 1=başlangıç, 2=bitiş karakteri.