आपको बस FOR XML
. के साथ सही विकल्पों का उपयोग करने की आवश्यकता है . यहाँ एक तरीका है जो एन्कोडिंग से बचा जाता है:
USE tempdb;
GO
CREATE TABLE dbo.x(y nvarchar(255));
INSERT dbo.x SELECT 'Sports & Recreation'
UNION ALL SELECT 'x >= y'
UNION ALL SELECT 'blat'
UNION ALL SELECT '<hooah>';
-- BAD:
SELECT STUFF((SELECT N',' + y
FROM dbo.x
FOR XML PATH(N'')),1, 1, N'');
-- GOOD:
SELECT STUFF((SELECT N',' + y
FROM dbo.x
FOR XML PATH, TYPE).value(N'.[1]', N'nvarchar(max)'),1, 1, N'');
GO
DROP TABLE dbo.x;
यदि आप SQL सर्वर (2017+) के नए संस्करण पर हैं, तो आप STRING_AGG()
और एक्सएमएल के बारे में बिल्कुल भी चिंता न करें:
SELECT STRING_AGG(y, N',') FROM dbo.x;
db<>fiddle तीनों का प्रदर्शन।