Je cherche à créer une liste de valeurs séparées par des virgules à partir d'une table SQL Server 2005, tout comme dans question de JanetOhara . J'utilise une requête similaire à celle présentée dans réponse de techdo à la question.
Tout fonctionne, sauf que la liste des valeurs est encodée en XML. Quel devrait être:
Sports & Recreation,x >= y
Renvoie à la place:
Sports & Recreation,x <= y
Existe-t-il un moyen de désactiver le codage de caractères XML lors de l'utilisation de "FOR XML" dans SQL Server?
Il vous suffit d'utiliser les bonnes options avec FOR XML
. Voici une approche qui évite le codage:
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 '';
-- 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;