JanetOharaの質問 のように、SQL Server 2005テーブルからコンマ区切りの値のリストを作成しようとしています。私は techdo's answer で提示された質問と同様の質問を使用しています。
値のリストがXMLエンコードされていることを除いて、すべてが機能しています。あるべきこと:
Sports & Recreation,x >= y
代わりに次を返します:
Sports & Recreation,x <= y
SQL Serverで「FOR XML」を使用するときにXML文字エンコードを無効にする方法はありますか?
FOR XML
で正しいオプションを使用するだけです。エンコードを回避する1つのアプローチを次に示します。
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;