在SQL2005中输出逗号连接的字符串

来源:互联网 发布:客车订票用什么软件 编辑:程序博客网 时间:2024/05/17 23:12

直接上SQL


select stuff((select ','+CAST([Id] as varchar) from EventLogfor XML Path('Logs'),Type).value('.','varchar(max)'),1,1,'')


输出:

1,2,3,4,5,6,7,8,9,10,11,12,13,14




上面的SQL中 EventLog是一个Table,[Id]是其中一个字段名。

select 子句作用是用逗号连接每一个查询出来的[Id],for XML Path('') 子句是将查询结晒输出为XML,Type 的作用是使输出的内容为XML DOM,这就可以使用点运算符调用value()函数,将XML中的”值“提取,并使用逗号连接起来。

外层的Select子句,使用Stuff函数,将从下标为1,长度为1的字符去掉,并使用一个空白字符代替。

查询结果的顺序:

A

select ','+CAST([Id] as varchar) from EventLogfor XML Path('Logs'),Type

<Logs>,1</Logs><Logs>,2</Logs><Logs>,3</Logs><Logs>,4</Logs><Logs>,5</Logs><Logs>,6</Logs><Logs>,7</Logs><Logs>,8</Logs><Logs>,9</Logs><Logs>,10</Logs><Logs>,11</Logs><Logs>,12</Logs><Logs>,13</Logs><Logs>,14</Logs>

B:

select (select ','+CAST([Id] as varchar) from EventLogfor XML Path('Logs'),Type).value('.','varchar(max)')


,1,2,3,4,5,6,7,8,9,10,11,12,13,14
C:

select stuff((select ','+CAST([Id] as varchar) from EventLogfor XML Path('Logs'),Type).value('.','varchar(max)'),1,1,'')
1,2,3,4,5,6,7,8,9,10,11,12,13,14

如果不好理解可以自行查询MSDN及建一个表测试一下。


Stuff函数参考:

http://msdn.microsoft.com/en-us/library/ms188043.aspx

原创粉丝点击