SQL Server’da STUFF FOR XML PATH Kullanımı

Herkese merhaba,

Bu yazıda SQL Server’da STUFF FOR XML PATH kullanımıyla ilgili bilgi vermeye çalışacağım.

SQL Server’da STUFF() , 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.

SQL Server’da FOR XML PATH ise, sorgu sonuçlarını PATH bağımsız değişkeninde bulunan öğe adıyla XML öğeleri olarak çıkarmanıza olanak tanır.

SQL Server’da STUFF FOR XML PATH ise, bir sorgu sonucunu XML formatında döndürmek için kullanılan bir işlevdir. Bu işlev, belirli bir karakter dizisinin belirtilen bir konumundan başlayarak, belirtilen uzunlukta bir karakter dizisini diğer bir karakter dizisiyle değiştirir.

Örnek olarak, bir “Customers” tablosunda yer alan müşteri adlarını ve sipariş numaralarını birleştirerek XML formatında döndürmek istediğimizi varsayalım. Bu durumda, STUFF FOR XML PATH işlevi şu şekilde kullanılabilir:

CREATE TABLE Customers (
	CustomerID INT NOT NULL PRIMARY KEY
   ,CustomerName VARCHAR(255) NOT NULL
   ,ContactName VARCHAR(255)
   ,Country VARCHAR(255)
);

INSERT INTO Customers (CustomerID, CustomerName, ContactName, Country)
	VALUES (1, 'Alfreds Futterkiste', 'Maria Anders', 'Germany'),
	(2, 'Ana Trujillo Emparedados y helados', 'Ana Trujillo', 'Mexico'),
	(3, 'Antonio Moreno Taquería', 'Antonio Moreno', 'Mexico'),
	(4, 'Around the Horn', 'Thomas Hardy', 'UK'),
	(5, 'Berglunds snabbköp', 'Christina Berglund', 'Sweden');


CREATE TABLE Orders (
	OrderID INT NOT NULL PRIMARY KEY
   ,CustomerID INT NOT NULL
   ,OrderDate DATE
   ,TotalAmount DECIMAL(10, 2)
);

INSERT INTO Orders (OrderID, CustomerID, OrderDate, TotalAmount)
	VALUES (1, 1, '2022-01-01', 100.50),
	(2, 1, '2022-02-01', 200.25),
	(3, 2, '2022-01-15', 75.80),
	(4, 3, '2022-02-28', 150.00),
	(5, 5, '2022-01-20', 50.00);

SELECT
	CustomerName
	,STUFF((SELECT
			',' + CAST(OrderID AS VARCHAR(10))
		FROM Orders
		WHERE CustomerID = c.CustomerID
		FOR XML PATH (''))
	, 1, 1, '') AS OrderIDs
FROM Customers c

Yukarıdaki sorguyu çalıştırınca aşağıdakine benzer bir sonuç göreceksiniz.

SQL Server'da STUFF FOR XML PATH Kullanımı

Yukarıdaki sorgu, her bir müşteri için bir satır döndürür ve her bir müşterinin sipariş numaralarını birleştirerek XML formatında “OrderIDs” sütununda döndürür. STUFF işlevi, sipariş numaralarının virgülle ayrılmış bir listesini oluşturmak için kullanılır. FOR XML PATH ise, sonucu XML formatında döndürmek için kullanılır.

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

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