2012-04-19 44 views
2

我有一个表的SQL:转换行字符串在SQL

ID User  Observation 
======================================== 
1  John  This is correct! 
---------------------------------------- 
2  Michael I got an error! 
---------------------------------------- 
3  Joshua  This is incorrect! 
---------------------------------------- 

我要的是一个函数塔尔返回一个varchar与数据上的字符串

像这样:

编辑: 这是我希望得到的结果:

John says: This is correct!\r\nMichael says: I got an error!\r\nJoshua says: This is incorrect 

有没有办法做到这一点?

+0

您是否尝试过什么呢? – simchona 2012-04-19 20:00:13

+0

我试过使用游标,但我不想那样做 – jcvegan 2012-04-19 20:01:05

+0

所以你想在一个列中的一切? – Teja 2012-04-19 20:01:30

回答

7

作为一个单列和单行,你可以做到这一点

DECLARE @out as varchar(max) 

SET @Out = '' 

SELECT @Out = @Out + [User] + ' says: ' + Observation + CHAR(13) + CHAR(10) 
FROM Table1 

SELECT @out 

See it here

下面是SSMS输出(使用文本输出)

------------------------------- 
John says: This is correct! 
Michael says: I got an error! 
Joshua says: This is incorrect! 

(1 row(s) affected) 
+1

如果表有很多行,那么有很多行..我只想要一行包含所有的数据。 – jcvegan 2012-04-19 20:10:14

+0

恩,不,它用换行符返回一行。这是CHAR(13)+ CHAR(10)所做的。 'SELECT @ out'也不能返回多行 – 2012-04-19 20:14:43

4

如果你想Concat的一个回车+换行分隔的所有行:

declare @UserObservation Table(ID int, [User] varchar(20), Observation varchar(100)); 
insert into @UserObservation values(1, 'John' ,'This is correct!'); 
insert into @UserObservation values(2, 'Michael' ,'I got an error!'); 
insert into @UserObservation values(3, 'Joshua' ,'This is incorrect!'); 

DECLARE @WhatAllUserSay VARCHAR(8000) ; 
SELECT @WhatAllUserSay = 
    COALESCE(@WhatAllUserSay + CHAR(13) + CHAR(10), '') + [User] + ' says: ' + Observation 
FROM @UserObservation 

PRINT @WhatAllUserSay; 

COALESCE

输出:

John says: This is correct! 
Michael says: I got an error! 
Joshua says: This is incorrect! 
+0

但是,这给了我很多包含字符串的行....我想要的是一行与所有的数据分隔行的行数。 – jcvegan 2012-04-19 20:03:12

+0

请举例说明您需要的EXACT输出,然后人们将能够帮助您(或者至少告诉您不可能)。 – 2012-04-19 20:06:12

+0

更新...这是te结果我期望 – jcvegan 2012-04-19 20:08:56

0

选择[用户] +'说:'+ [Observation] FROM [TableName]

+0

我希望所有的单行 – jcvegan 2012-04-19 20:06:22

0
SELECT User +' says: ' + Observation AS USER_SAID 
FROM TABLE; 
+0

我希望所有的单行 – jcvegan 2012-04-19 20:06:10