STUFF() işlevi, bir dizenin belirli bir bölümünü siler ve ardından belirtilen bir konumdan başlayarak dizeye başka bir bölüm ekler.
Söz Dizimi: STUFF(metin, baslangic, uzunluk, yeni metin)
SELECT STUFF('Developer Fatih', 11, 0, 'Alkan');
Sonuç: Developer AlkanFatih
FOR XML PATH işlevi, sorgu sonuçlarını PATH bağımsız değişkeninde bulunan öğe adıyla XML öğeleri olarak çıkarmanıza olanak tanır.
SELECT GrupAdi + ',' FROM TBL_GRUP FOR XML PATH ('')
Sonuç: Akademik,Bitki-Hayvan,Diğer,Dijital Arşiv,Er Ofis,Hobiler,İş Hayatı,Sağlık,Genel,
Ben bu örnekleri kullanarak şöyle bir uygulama sorgusu yaptım o nedenle anlatmak istedim. Bir kategorim ve o kategoriye bağlı alt kategorilerimin olduğu bir tablom vardı. Her ana kategorimin yanına yeni bir satır oluşturup tek bir hücrenin içerisinde bağlı olduğu alt kategori bilgilerinin getirilmesini istedim aşağıda ki örnekle daha iyi anlaşılacağını düşünüyorum. Şöyle ki…
Ana Kategori Tablosu Alt Kategori Tablosu
ID | Kategori Ad ID | Ana Kat ID | Alt Kategori Ad | Sayfa
1 Akademik 1 2 Günlük Plan sayfagunluk
2 Sosyal Hayat 2 2 Sosyal Hayat sayfasosyal
3 Taşınır Taşınmaz 3 3 Kira Takip sayfakira
İstenilen Sonuç:
1 | Sosyal Hayat | 1, Günlük Plan, sayfagunluk
Kod Satırı
SELECT TBL_GRUP.GrupID, TBL_GRUP.GrupAdi, STUFF((SELECT ',' + CAST(TBL_MODUL.ModulID AS nvarchar), ',' + TBL_MODUL.ModulAdi, ',' + TBL_MODUL.ModulLink FROM TBL_MODUL WHERE TBL_MODUL.ModulDurum=1 AND TBL_GRUP.GrupID = TBL_MODUL.GrupID ORDER BY ModulSira FOR XML PATH('')), 1, 1, '') [ModulAdi] FROM TBL_GRUP WHERE TBL_GRUP.GrupDurum=1
Ekran Çıktısı