dan*_*ans 45 xml encoding sql-server-2005 for-xml-path
我正在寻找从SQL Server 2005表创建一个以逗号分隔的值列表,就像在JanetOhara的问题中一样.我正在使用类似于techdo对问题的回答中提出的查询.
一切正常,除了值列表正在进行XML编码.应该是什么:
Sports & Recreation,x >= y
Run Code Online (Sandbox Code Playgroud)
而是返回为:
Sports & Recreation,x <= y
Run Code Online (Sandbox Code Playgroud)
有没有办法在SQL Server中使用"FOR XML"时禁用XML字符编码?
Aar*_*and 106
你只需要使用正确的选项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 '';
-- 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;
Run Code Online (Sandbox Code Playgroud)