SQL Server’da LastIndexOf Fonksiyonu Yazmak

Herkese merhaba,

Bu yazıda SQL Server’da LastIndexOf fonksiyonu yazmak ile ilgili bilgi vermeye çalışacağım.

Öncelikle SQL Server’da böyle bir fonksiyon normalde yok. Fonksiyonu yazmadan önce CHARINDEX fonksiyonu hakkında kısa bir bilgi dönelim.

SQL Server’da CHARINDEX fonksiyonu baştan başlayarak bir arama işlemi gerçekleştirir ve ilk bulduğu karakterin konumunun yerini döner. Yazacağımız LastIndexOf fonksiyonu ise sondan başlayarak bir arama işlemi gerçekleştirir ve karakterin konumunun yerini döner.

Aşağıdaki fonksiyonu kullanarak siz de bu işlemi rahatlıkla yapabilirsiniz.

CREATE FUNCTION dbo.LastIndexOf
(
    @aramayapilacakmetin NTEXT,
    @aranacakkarakter NTEXT
)
RETURNS INT
AS
BEGIN
    IF (@aramayapilacakmetin IS NULL)
        RETURN NULL;
    IF (@aranacakkarakter IS NULL)
        RETURN NULL;
    DECLARE @aramayapilacakmetin2 AS NVARCHAR(MAX) = @aramayapilacakmetin;
    DECLARE @aranacakkarakter2 AS NVARCHAR(MAX) = @aranacakkarakter;
    DECLARE @index AS INT = CHARINDEX(REVERSE(@aranacakkarakter2), REVERSE(@aramayapilacakmetin2));
    IF (@index < 1)
        RETURN 0;
    DECLARE @icerikuzunluk AS INT = (LEN('|' + @aramayapilacakmetin2 + '|') - 2);
    DECLARE @aranacakkarakterLength AS INT = (LEN('|' + @aranacakkarakter2 + '|') - 2);
    DECLARE @sonuc AS INT = (@icerikuzunluk - @index - @aranacakkarakterLength + 2);
    RETURN @sonuc;
END;

--Kullanımı

SELECT dbo.LastIndexOf('Yavuz Selim Kart','a')

Yukarıdaki fonksiyonu oluşturup kodu çalıştırınca aşağıdakine benzer bir sonuç göreceksiniz.

Görüldüğü üzere a harfini sondan başlayarak aramış ve ilgili sonucu döndürmüştür.

Herkese çalışma hayatında ve yaşamında başarılar kolaylıklar.

49 Kez Okundu

Yavuz Selim Kart

Yazılım ve veri tabanında bildiklerimi anlatmaya gayret ediyorum. Halen birçok programlama dili üzerinde araştırmalar yaparak kendimi geliştiriyorum. Bunlar haricinde Grafik Tasarım ve Wordpress konularına da ilgim bulunmakta. SEO ve Sosyal medya yönetimleri hakkında da bilgim mevcuttur. Kısaca çok çalışmayı seven azimli biriyim.

You may also like...

Yazı kopyalamak yasaktır!