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.

288 Kez Okundu

Kategoriler: