İleri Seviye SQL Server Sql Server

SQL Server’da Evrak Numarası İçindeki Sayısal Kısmı Almak

SQL Server Eğitimleri Kanalına Abone Olun

Herkese merhaba,

Bu yazıda SQL Server’da evrak numarası içindeki sayısal kısmı almak hakkında bilgi vereceğim.

Aslında bu bilgiyi veren ve kodları hazırlayan kişi Çağrı Güngör Bey. SQL Server Eğitimleri Telegram Grubunda bir arkadaş bu soruyu sordu ve ona bu fonksiyonu hazırladı.

Kendisine bu çalışması için ayrıca teşekkürler.

Soru : Elimde JI20057259_1_176810_156 böyle bir evrak no var. Bu evrak numarasında ikinci tireden üçüncü tireye kadar olan kısmı dinamik olarak nasıl alabilirim.

CREATE FUNCTION fn_SplitDocumentNumber
(
    @DocumentNumber CHAR(50),
    @brackets CHAR(1)
)
RETURNS CHAR(20)
AS
BEGIN


    DECLARE @IlkBolumUzunluk INT = LTRIM(RTRIM(CHARINDEX(@brackets, @DocumentNumber)));

    DECLARE @IkinciBolumUzunluk INT
        = CHARINDEX(
                       @brackets,
                       (SUBSTRING(
                                     @DocumentNumber,
                                     CHARINDEX(@brackets, @DocumentNumber) + 1,
                                     LEN(SUBSTRING(@DocumentNumber, CHARINDEX(@brackets, @DocumentNumber) + 1, 10))
                                 )
                       )
                   );

    DECLARE @SonBolum CHAR(30)
        = SUBSTRING(
                       @DocumentNumber,
                       (@IlkBolumUzunluk + @IkinciBolumUzunluk) + 1,
                       (LEN(@DocumentNumber) - (@IlkBolumUzunluk + @IkinciBolumUzunluk))
                   );

    RETURN SUBSTRING(LTRIM(RTRIM(@SonBolum)), 1, CHARINDEX(@brackets, LTRIM(RTRIM(@SonBolum))) - 1);

END;

GO


--Kullanımı

--İstediğiniz karakter olabilir. İkinci parametrede bu kısmı belirtebiliyorsunuz

SELECT dbo.fn_SplitDocumentNumber(N'JI20057259_1_176810_156', N'_');

SELECT dbo.fn_SplitDocumentNumber(N'JI20057259-1-176810-156', N'-');

Fonksiyonu oluşturup çalıştırdığınızda aşağıdaki gibi bir sonuç alacaksınız.

Sorgu ile ilgili detaylı bilgi almak isterseniz Çağrı Güngör Beye ulaşabilirsiniz.

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

SQL Server Eğitimleri Kanalına Abone Olun

Yazar hakkında

Yavuz Selim Kart

SQL Server tarafında kendini ilerletmeye çalışırken bildiklerini sürekli başkalarına aktaran, yazılım dünyasında (C#, Java, Python vb.) kendini güncel tutmaya çalışan, araştırma yapmaktan bıkmayan, meraklı, bilginin üzerine bilgi katmaktan mutluluk duyan bir yazılım eğitmeni ve kod sever.
Grafik tasarım dünyasında Indesign'ı anlatacak kadar iyi kullanabilen, Photoshop ve Illustrator'e de orta düzey hakimiyeti bulunan, internet üzerinde online kimya dergisi kurmuş ve bunu yüzbinlerce kişiye ulaştırmayı başaran bir grafik sever.
WordPress tarafında 5 adet web sitesi kurmuş, bu sistemler üzerine çalışan bir WordPress sever.
Sosyal medya üzerinde okumalara ve araştırmalara devam eden, kendi kurmuş olduğu kimya dergisini daha çok kişiye nasıl ulaştırırım diye düşünen ve bu konuda SEO çalışmaları üzerine kafa yoran bir Sosyal Medya sever.
Kısaca çok çalışmayı seven, azimli biriyim.

Kopyalamak Yasaktır!