SQL SERVERDA STORED PROCEDURE ILE KENDI SUBSTRING FONKSIYONUMUZU YAZALIM
SQL Serverda Stored Procedure lerden daha önceki makalemizde bahsetmistik. Bu nedenle bu makalemizde Stored Procedure nedir? Ne ise Yarar? Faydalari Nedir? Gibi sorulara cevap vermeyecegim. SP ile ilgili diger makalemizde bu sorularin hepsine cevap bulabilirsiniz.

SP ile diger makalemizde basit örneklerle konunun daha iyi anlasilmasina çalistim. Bu makalemizde ise daha ileri bir örnek yaparak konuyu pekistirelim.

Öncelikle substring in ne olduguna bakalim. Substring adindan da belli oldugu gibi string bir fonksiyondur ve kullanim amaci string bir ifadeyi istedigimiz yerden istedigimiz kadar kesmeye yariyor. Kullanim biçimi ise select substring(‘string bir ifade, baslangiç indisi, kesilecek karakter sayisi) biçimindedir. Tüm string fonksiyonlar basinda select ifadesi ile kullanilirlar ve parametreleri parantez içinde yazilir.

Ilk olarak string bir ifade ardindan baslangiç pozisyonu ardindan da uzunlugunu giriyoruz ve bize string bir ifade döndürüyor.

Bir örnekle daha iyi anlasilsin. Select Substring(‘ankara’,3,3) dedigimizde bu kodun çiktisi: kar seklinde olacaktir. 3. Karakterinden baslayip 3 karakter al demis olduk.

Konuyu daha fazla uzatmayip kendi substringimizi prosedür biçiminde yazmaya baslayalim.

create proc kes(@metin varchar(50),@baslangic int ,@adet int) –1
as
begin

declare @uzunluk int, @sonuc varchar(50),@yenideger int, @sagdan varchar(50) –2

set @uzunluk = (select len(@metin)) –3

set @yenideger = @uzunluk – @baslangic +1 –4

set @sagdan = (select right(@metin,@yenideger)) –5

set @sonuc = (select left(@sagdan,@adet)) –6

print @sonuc –7
end

Prosedürümüzü execute ederek çalistiralim.

Substring fonksiyonunu C# ta yapmis olsaydik, istedigimiz karakterden baslayan ve istedigimiz karakter uzunluguna kadar devam eden bir for donüsü kurup elimize gecen her harfi string toplamasi yaparak sonucu bulurduk. SQL de for dongusunu while ile çözebilirdik fakat string toplamasi yapma gibi bir sansimiz yok. Bu nedenle yine SQL Serverda bulunan bazi string fonksiyonlari yardimiyla bu isi halletmis olacagiz. Hangi fonksiyonu neden kullandigimizi, ne ise yaradigini ve kodlarimizin açiklamasini yapacagim.

Algoritmayi nasil gelistirdigime kisaca deginmek istiyorum yoksa yazdigimiz kodlarin anlasilmasi biraz zor olacak. Bir örnek üzerinden açiklayalim hemen.
Örnek: kes ‘salih’,2,3 dedigimizde bize bunu ali olarak döndürmesi gerek. Bu örnege göre S ve H harflerinin gitmesi gerekiyo , önce right fonksiyonu ile son 4 karakteri aldirdim Alih kaldi. Daha sonra left fonksiyonu ile ilk 3 karakteri aldirdim ali kaldi ve bunu ekrana yazdirdim.

–1. Kes adinda bir prosedur tanimladik ve Substring te oldugu gibi ilk olarak metin adinda string bir parametre ardinda da baslangiç ve adet olarak int türünde 2 tane daha parametre yolladik. Gördügümüz gibi Substring teki yapiyi biz kendi kes prosedürümüzde olusturmus olduk.

–2. Çesitli degerler tanimladik. Bu degerlerin hepsini kodlarimizda kullanacagiz.

–3. Burada len adinda string bir fonksiyon kullandik. Len fonksiyonu yazdigimiz string bir ifadenin karakter sayisini verir. Ve kullanim biçimi len(‘metin’) seklindedir. Dedigimiz gibi string fonksiyonlar basinda select ifadesi ile kullanilirlar. Daha sonra girdigimiz string ifadenin karakter sayisini uzunluk adinda bir degiskene atadik.

–4. Burada ise sondan kaç karakter alinacagini yenideger adinda bir degiskene atiyoruz.

–5. Right fonksiyonu ile girdigimiz string ifadenin sondan belirttigimiz karakter kadar alinmasini sagladik ve bunu sagdan adli degiskene atadik. Kullanim biçimi select right(‘yazilimdevi’,5) seklindedir. Çikti ise mdevi biçiminde olacaktir. Sondan 5 karakteri aldi.

–6. Left fonksiyonu ile sagdan adli degiskene atadigimiz ifadeyi girdigimiz adet kadar bastan kesilmesini sagladik ve bunu sonuc adli degiskene atadik. Kullanim biçimi select left(‘mdevi’,3) seklindedir. Çikti ise mde olacaktir. Ilk 3 karakteri aldik.

–7. Print komutu ile sonuç degiskenini ekrana yazdirdik.

Execute ettigimiz prosedürümüzün dogru çalisip çalismadigini kontrol edebilirsiniz. Query ekranina
Kes ‘Salih DEMIROG’,7,5
Yazdigimizda sonuç: DEMIR olacaktir. Önceki SP ile ilgili makalemizde belirttigimiz gibi prosedürler parantez içinde kullanilmiyordu.

Bu makalemizde Substring fonksiyonunu kendimiz yazdik ve bunun yani sira len fonksiyonun girdigimiz ifadenin karakter sayisini verdigini, right fonksiyonunun girdigimiz ifadenin sondan belirttigimiz sayi kadar kestigini ve left fonksiyonunun girdigimiz ifadenin bastan belirttigimiz sayi kadar kestigini ögrenmis olduk.

Biz bu makalemizde substring fonksiyonlarini kendimiz yazdik ve var olan left ve right fonksiyonlarini kullandik. Sizde right ve left fonksiyonlarini kendi gelistirdiginiz algoritmalarla SagdanKes ve SoldanKes olarak yazip bunu kendi yazdiginiz Substring fonksiyonunda kullanabilirsiniz. Ayrica bunu bizimle paylasarak makalenizin sitemizde yayinlanmasini saglayabilirsiniz.
Iyi Çalismalar….

Konu ile ilgili diger makaleler ve videolar:

1- SQL Server da Stored Procedure (SP) Kavrami