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.

ASP ile sık kullanılan fonksiyonlar ve kullanım şekilleri (Bölüm 1)

Trim: Türkçe karşılığı düzeltmek, kesip budamak vb.. anlamlara geliyor. Verinin başındaki ve sonundaki boşlukları almaya yarıyor. Üç şekilde kullanımı bulunuyor. LTrim: Burdaki “L” Left in yani sol un kısaltılmış hali. RTrim: Burdaki “R” Right in yani sağ ın kısaltılmış hali.

        degisken = " 123456789 "
	Response.Write Trim(degisken) ' Çıktısı (123456789) şeklindedir.
	Response.Write LTrim(degisken) ' Çıktısı (123456789 ) şeklindedir.
	Response.Write RTrim(degisken) ' Çıktısı ( 123456789) şeklindedir.

FormatNumber: Gelen sayısal değeri biçimlendirmek, özelliklede virgüllü sayıların virgülden sonraki basamaklarını tahin etmek için kullanılır.

degisken = "123,5592"
degisken1 = "125"
	Response.Write FormatNumber(degisken,2) 'çıktı 123,56 şeklindedir. Buradaki 2 virgülden sonraki basamak sayısını ifade eder.
	Response.Write FormatNumber(degisken1,2) 'çıktı 125,00 şeklindedir.
	Response.Write FormatNumber(degisken1,3) 'çıktı 125,000 şeklindedir.

Len: Length kelimesinin kısaltılmış halidir. Türkçe karşılığı uzunluktur. Veri içindeki karakter sayısını geri döndürür.

degisken = "apostylee.com"
	Response.Write Len(degisken) ' Çıktı 13 dür.

Left, Right: Türkçe karşılığı sol ve sağ olan bu fonksyionlarla, verinin soldan ve sağdan görünecek karakter sayısını belirleyebiliyoruz. Değişkenimizden sonraki sayı kaç karakterin alınacağını ifade eder.

degisken ="bu bir soldan sağdan kırpma örneğidir."
	Response.Write Left(degisken,6) ' çıktı (bu bir) şeklindedir.
	Response.Write Right(degisken,10) ' çıktı (örneğidir.) şeklindedir.