SQL Server’da Tekrarlanan Listeleri Teke Düşüren Fonksiyon

Herkese merhaba,

Bu yazıda SQL Server’da tekrarlanan listeleri teke düşüren fonksiyon ile ilgili bilgi vermeye çalışacağım.

SQL Server’da bazı durumlarda tekrarlanan listeleri teke düşürmek isteyebilirsiniz.

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

CREATE FUNCTION dbo.TekrarlananListeleriTekeDusur
(
    @Liste VARCHAR(MAX),
    @Ayirac CHAR
)
RETURNS VARCHAR(MAX)
AS
BEGIN
    DECLARE @AyrilmisListe TABLE
    (
        ListeElemanlari VARCHAR(MAX)
    );

    DECLARE @Liste1 VARCHAR(MAX);
    DECLARE @Pozisyon INT;
    DECLARE @rListe VARCHAR(MAX);

    SET @Liste = LTRIM(RTRIM(@Liste)) + @Ayirac;
    SET @Pozisyon = CHARINDEX(@Ayirac, @Liste, 1);

    WHILE @Pozisyon > 0
    BEGIN
        SET @Liste1 = LTRIM(RTRIM(LEFT(@Liste, @Pozisyon - 1)));
        IF @Liste1 <> ''
        BEGIN
            INSERT INTO @AyrilmisListe
            VALUES
            (CAST(@Liste1 AS VARCHAR(MAX)));
        END;
        SET @Liste = SUBSTRING(@Liste, @Pozisyon + 1, LEN(@Liste));
        SET @Pozisyon = CHARINDEX(@Ayirac, @Liste, 1);
    END;

    SELECT @rListe = COALESCE(@rListe + ',', '') + ListeElemanlari
    FROM
    (SELECT DISTINCT ListeElemanlari FROM @AyrilmisListe) AS t;

    RETURN @rListe;
END;


--Kullanımı

 SELECT dbo.TekrarlananListeleriTekeDusur('342,34,456,34,3454,456,aa,bb,cc,aa',',') TekrarlananlarTekeDustu

Yukarıdaki Fonksiyonu oluşturup çalıştırdığınızda aşağıdaki sonucu göreceksiniz.

SQL Server'da Tekrarlanan Listeleri Teke Düşüren Fonksiyon

Görüldüğü üzere tekrarlanan liste teke düşürülmüş oldu.

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

204 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!