Sql Server charindex Fonksiyonu

Herkese merhaba, Sql Server yazılarımıza kaldığımız yerden devam ediyoruz. Bu yazımızda charindex() fonksiyonunu anlatacağım. Hadi başlayalım !
charindex() fonksiyonu metinsel bir veri içerisinde arama yapmayı sağlıyor. Aranan ifade metin içerisinde geçiyorsa index numarasını, bulamazsa sıfır döndürüyor. Ayrıca sadece tek karakter değil, birden fazla karakterli aramalarda yapabiliyor. Yani örneğin Softwaresup.net ifadesinde o karakterini arayabildiğiniz gibi oftw ifadesini de arayabilirsiniz. Fonksiyonu kullanabilmek için metinsel tipte olmak üzere aranacak ifadeyi, metinsel olmak üzere içerisinde arama yapılacak metni ve int tipte başlangıç noktasını parametre olarak göndermeniz gerekiyor. Üçüncü parametre zorunlu değil, gönderirseniz gönderdiğiniz index numarasındaki karakterden başlayarak arama yapar, göndermezseniz ifadenin başından itibaren arama yapar. Yine aynı şekilde aranan ifadeyi bulursa bulunduğu index numarasını, bulamazsa sıfır döndürür.
Örneğin Softwaresup.net ifadesinden o ve oft ifadelerini ayrı ayrı arayalım ve sonrasında bu işlemleri bir de üçüncü parametreyi göndererek yapalım. Yani şöyle bir kod yazalım;
select charindex('o', 'Softwaresup.net');
select charindex('oft', 'Softwaresup.net');
select charindex('o', 'Softwaresup.net', 5);
select charindex('oft', 'Softwaresup.net', 3);
Birinci sorguda Softwaresup.net içerisinden o karakterini en baştan itibaren arayacak, ikincide de yine aynı şekilde en baştan başlayarak oft ifadesini arayacak. Üçüncü sorguda o karakterini bu sefer Softwaresup.net ifadesinin 5. karakterinden itibaren yani w’dan sonrasında arayacak. Dördüncüde ise bu sefer 3. karakterden itibaren yani f’den sonra arama yapacaktır. Bu sorguları çalıştırdığınızda şöyle bir çıktı göreceksiniz;

4 satır kod yazdık ve hepsi birbirinden bağımsız olduğu için 4 farklı sonuç görmemiz gayet normal. Çıktılarda sorgularla aynı sırada görünecektir. Yani en üstteki çıktı en üstteki sorgunun (select charindex(‘o’, ‘Softwaresup.net’)), en alttaki çıktı ise en alttaki sorgunun (select charindex(‘oft’, ‘Softwaresup.net’, 3)) çıktısıdır. 3. sorguda 5. karakterden sonra o karakteri geçmediğinden, 4. sorguda ise 3. karakterden sonra oft ifadesi geçmediğinden bulamadım anlamında sıfır döndürmüştür.
Üçüncü parametrenin tam sayı olması gerekiyor fakat ondalıklı sayı verirseniz de verdiğiniz değerin tam kısmını alır ve ona göre işlem yapar, ondalıklı kısmını ise göz ardı eder. Ayrıca bulduğu ilk andaki index numarasını geri döndürür. Yani softsoft ifadesinde o karakterini ararsanız 2. indexteki o karakterini görüp işlemi sonlandıracak ve size geriye 2 döndüreceği için sonrasına bakmayacak ve 6. karakterdeki o göz ardı edilecektir. Aynı şekilde softsoft içerisinden of ararsanız da yine 2 dönüşünü alacaksınız. Tek karakter olmayan aramalarda bulduğu yerin başlangıç indexini döndürecektir. Yani Softwaresup.net içerisinde oft araması yaptığınızda oft ifadesi 2-5. karakterler arasında bulunuyor ve başlangıcı 2. karakterde olduğu için 2 dönüşünü yapacaktır.
charindex() fonksiyonu select, insert, update ve delete sorgularında kullanılabilmektedir. select, update ve delete sorgularında where ile filtreleme yapmak için, insert sorgularında ise veri olarak eklenebilmekte. Ayrıca select sorgularında seçim içinde kullanılabilmekte. Örneğin varchar tipte kitapAdi sütunu olan kitaplar tablomuz olduğunu varsayalım. Bu tablo üzerinde charindex() fonksiyonunu kullanarak örnek kodlar yazalım;
select * from kitaplar where charindex('s', kitapAdi) = 1;
select charindex('sefil', kitapAdi) from kitaplar;
delete from kitaplar where charindex('e', kitapAdi, 5) = 5;
update kitaplar set kitapAdi='Sefiller' where charindex('seyfil', kitapAdi) = 1;
Birinci sorguda kitapAdi sütununun birinci karakterinden itibaren s değerini arayacak ve bulduğu sonuçları listeleyecektir. İkinci fonksiyonda kitapAdi sütununda sefil değerini arayacak ve bulduğu sonuçları listeleyecektir. Üçüncü sorguda kitapAdi sütununda 5. karakterden itibaren e arayacak ve bulduğu sonuçları silecektir. Son sorguda ise kitapAdi sütununda seyfil değerini arayacak ve bulduğu sonuçların kitapAdi değerini Sefiller yapacaktır.
Evet Sql Server charindex() fonksiyonu bu şekilde kullanılmakta, tüm Sql Server yazılarımıza buraya tıklayarak ulaşabilirsiniz. Herkese hayırlı günler.