SQL Server’da STRING_AGG Fonksiyonu Kullanımı

Herkese merhaba,

Bu yazıda size SQL Server 2017 ile gelen STRING_AGG Fonksiyonundan bahsedeceğim.

Aslında bu fonksiyon SQL Server 2016 ile hayatımıza girdi ama ben SQL Server 2017 ile anlatacağım.

Bu fonksiyona kısaca string dizi ifadelerini toplayan ya da birleştiren fonksiyon diyebiliriz. Ne demek istiyoruz birkaç örnekle açıklayalım.

--Tablo oluşturma

CREATE TABLE Firmalar
(
    Ad VARCHAR(200)
);
INSERT INTO Firmalar
VALUES
('A Firması'),
('B Firması'),
('C Firması'),
('D Firması'),
('E Firması');

--STRING_AGG kullanımı


SELECT STRING_AGG(Ad, ',')
FROM Firmalar;

Yukarıdaki kod bloğunu çalıştırdığınızda aşağıdaki sonucu göreceksiniz.

SQL Server'da STRING_AGG Fonksiyonu Kullanımı

Burada oluşturmuş olduğumuz 5 satırlık veriyi STRING_AGG fonksiyonu ile tek satırda gösterebildik.

Benzer işlemi STRING_AGG fonksiyonu kullanmadan eskiden nasıl yapıyorduk aşağıdaki kodda görmekteyiz.

SELECT STUFF(
       (
           SELECT ',' + [Ad] AS [text()] FROM Firmalar FOR XML PATH('')
       ),
       1,
       1,
       ''
            );

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

SQL Server'da STRING_AGG Fonksiyonu Kullanımı

Görüldüğü üzere yazarken biraz karmaşa yaratabilir.

STRING_AGG fonksiyonu ile ilgili başka bir örnek daha yapalım.

CREATE TABLE #Sehirler
(
    [SehirAd] VARCHAR(50)
);
GO

INSERT INTO #Sehirler
SELECT 'Ankara'
UNION ALL
SELECT 'İstanbul'
UNION ALL
SELECT 'Konya'
UNION ALL
SELECT 'İzmir'
UNION ALL
SELECT 'Bursa'
UNION ALL
SELECT 'Mardin'
UNION ALL
SELECT 'Bayburt'
UNION ALL
SELECT 'Hatay'
UNION ALL
SELECT 'Bitlis'
UNION ALL
SELECT 'Hakkari';
GO

SELECT STRING_AGG(SehirAd, ', ') AS TümSehirler
FROM #Sehirler;

--Sıralanmış olarak kullanmak
SELECT STRING_AGG(SehirAd, ', ')WITHIN GROUP(ORDER BY SehirAd) AS SiralanmisTümSehir
FROM #Sehirler;

Yukarıdaki kod bloğunu çalıştırdığınızda aşağıdaki sonucu göreceksiniz.

SQL Server'da STRING_AGG Fonksiyonu Kullanımı

Yukarıdaki işlemde ilk olarak bir temp tablo oluşturduk sonrasında içerisine şehir adlarını insert ettik. STRING_AGG fonksiyonumuz ile verileri tek satır olarak getirdik ki zaten amacımız da buydu. Sonrasında Within Group diyerek SehirAd kısmına göre tüm şehirleri sıraladık. İşlemde yapılanlar bu kadar.

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

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