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.
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.