我正在寻找从SQL Server 2005表创建一个以逗号分隔的值列表,就像在JanetOhara's question中一样。我正在使用类似于问题techdo's answer中提供的查询。
一切正常,但值列表正在进行XML编码。应该是什么:
Sports & Recreation,x >= y
而是返回:
Sports & Recreation,x <= y
在SQL Server中使用“FOR XML”时,有没有办法禁用XML字符编码?
答案 0 :(得分:100)
您只需要使用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;
答案 1 :(得分:0)
另一种方法是依靠字符的连接(当然,sql对于字符串操作不是很好,因为它是为了使用集合理论而开发的)
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>';
DECLARE @delimitedText varchar(max)
SET @delimitedText=''
SELECT @delimitedText += CASE WHEN LEN(@delimitedText) > 0 THEN +','+ y ELSE y END
FROM dbo.x
SELECT @delimitedText
GO
DROP TABLE dbo.x;
GO
答案 2 :(得分:0)
您也可以这样做:
<link href="https://fonts.googleapis.com/css?family=Arvo" rel="stylesheet">
<h1 id="title">Drum ? Kit</h1>
<div class="set">
<button class="w drum">w</button>
<button class="a drum">a</button>
<button class="s drum">s</button>
<button class="d drum">d</button>
<button class="j drum">j</button>
<button class="k drum">k</button>
<button class="l drum">l</button>
</div>