在单独的行上打印SQL结果
请参见下面的SQL语句:在单独的行上打印SQL结果,sql,sql-server,Sql,Sql Server,请参见下面的SQL语句: create table dbo.test(id int identity, Name varchar(10)) insert into test values ('ian') insert into test values ('andy') insert into test values ('vicky') SELECT TOP 1 STUFF((SELECT ',' + Name AS [text()] FROM
create table dbo.test(id int identity, Name varchar(10))
insert into test values ('ian')
insert into test values ('andy')
insert into test values ('vicky')
SELECT TOP 1
STUFF((SELECT ',' + Name AS [text()]
FROM dbo.Test
ORDER BY id
FOR XML PATH('')), 1, 0, '' ) Concatenated
FROM TEST
它按预期返回单个字符串值:、ian、andy、vicky。如果我把结果打印在网页上,它会按预期打印:伊恩、安迪、维姬。有什么方法可以打印:
伊恩
安迪
维姬
i、 e.在单独的行上?你是说这个
从测试中选择名称你的意思是
从测试中选择“名称”一旦得到连接的结果,就可以将其拆分,并在一个数组中有3个单独的值。然后你可以用它们做任何你想做的事情。@durbnpoisin,我意识到你可以用代码来做,例如VB。然而,我不知道是否有办法在SQL级别实现这一点。我回答了这个问题,但哇,这似乎是一个OP不知道以任何方式发生了什么的情况。@Hogan,这太苛刻了。我有六年完整的.NET和SQL开发经验。我正在维护一个糟糕的遗留系统,这是我所能看到的在不进行重大重构的情况下添加一些基本功能的最佳方法。@w0051977-当然-那么为什么不将更改为?一旦得到连接的结果,就可以将其拆分,并在一个数组中有3个单独的值。然后你可以用它们做任何你想做的事情。@durbnpoisin,我意识到你可以用代码来做,例如VB。然而,我不知道是否有办法在SQL级别实现这一点。我回答了这个问题,但哇,这似乎是一个OP不知道以任何方式发生了什么的情况。@Hogan,这太苛刻了。我有六年完整的.NET和SQL开发经验。我正在维护一个糟糕的遗留系统,这是我能看到的在不进行重大重构的情况下添加一些基本功能的最佳方法。@w0051977-当然-那么为什么不将更改为?如果他想要这样做,那将非常奇怪我的想法是一样的。我在问是否要发布它,然后不管怎样都继续了。如果他想要这个,那真的很奇怪我的想法是一样的。我在问是否要发布它,然后不管怎样都继续了。谢谢。这就是我最初的想法。但是,输出为:BR/ianBR/andyBR/vicky.SQL=BR/ianBR/andyBR/vicky,HTML=ianandyvicky。在chrome上测试。@w0051977-dude,这应该由浏览器解释。请看我的评论。好的@w0051977-你到底想要什么-我删除了前导是什么困扰了你?@BoratSagdiyev-我猜这是实际查询的简化版本,这样做实际上会改变很多其他东西-这是我解释问题的唯一方式。谢谢。这就是我最初的想法。但是,输出为:BR/ianBR/andyBR/vicky.SQL=BR/ianBR/andyBR/vicky,HTML=ianandyvicky。在chrome上测试。@w0051977-dude,这应该由浏览器解释。请看我的评论。好的@w0051977-你到底想要什么-我删除了前导是什么困扰了你?@BoratSagdiyev-我猜这是实际查询的简化版本,这样做实际上会改变很多其他东西-这是我解释问题的唯一方法。
SELECT TOP 1
STUFF((SELECT '<BR/>' + Name AS [text()]
FROM dbo.Test
ORDER BY id
FOR XML PATH('')), 1, 5, '' ) Concatenated
-- could be this if depending on any xxs settings on sql server
-- FOR XML PATH('')), 1, 11, '' ) Concatenated
FROM TEST