Tablo Döndüren SQL Split

Önceki yazılarımızda SQL Split fonksiyonuna yer vermiştim fakat bu fonksiyon sadece bir adet değer döndürmeye yarıyor idi. Oysa bazı durumlarda biz verdiğimiz değerin tamamının parçalanıp bize geri döndürülmesini isteyebiliriz işte böyle durumlarda da aşağıdaki fonksiyonu kullanacağız.

CREATE FUNCTION [dbo].[Split](@STRING nvarchar(4000), @Delimiter char(1))
RETURNS @Results TABLE (Items nvarchar(4000))
AS
    BEGIN
        DECLARE @INDEX INT
        DECLARE @SLICE nvarchar(4000)
        SELECT @INDEX = 1
 
        IF @STRING IS NULL RETURN
        WHILE @INDEX !=0
        BEGIN
            SELECT @INDEX = CHARINDEX(@Delimiter,@STRING)
 
            IF @INDEX !=0
                SELECT @SLICE = RTRIM(LTRIM(LEFT(@STRING,@INDEX - 1)))
            ELSE
                SELECT @SLICE = RTRIM(LTRIM(@STRING))
 
            INSERT INTO @Results(Items) VALUES(@SLICE)
 
            SELECT @STRING = RIGHT(@STRING,LEN(@STRING) - @INDEX)
 
            IF LEN(@STRING) = 0 BREAK
        END
    RETURN
END

Kodun kullanışıda aşağıdaki gibidir;

select * from dbo.Split('Deee-zzzz-fff-ttt','-')
Etiket(ler): , .Yer işareti koy Kalıcı Bağlantı.

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir