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.