如何从表中选择所有数据到sql中的单个字符串输出

时间:2014-04-23 03:14:12

标签: sql

只是徘徊,有什么方法可以从表中选择所有数据到sql中的单个字符串输出?

实施例: 我有下表(tableA),其中包含以下数据

Name        Age        Address
Jay         10         11 Happy St
David       12         13 Angel St
Tom         30         23 Betman St

如何在sql中选择以获得如下输出:

Jay,10,11 Happy St \ n \ nDavid,12,13 Angel St \ n \ nTom,30,23 Betman St \ n \ n

这可以在sql脚本中使用吗?

3 个答案:

答案 0 :(得分:0)

对于MySQL(SQL Fiddle):

SELECT GROUP_CONCAT(Name , ',', Age, ',', Address separator '\n\n') as List 
FROM tableA;

对于Oracle(SQL Fiddle):

SELECT LISTAGG(Name || ','|| Age || ','|| Address,  '\n\n') 
       WITHIN GROUP (ORDER BY Name) as List
FROM tableA;

对于SQL Server(SQL Fiddle):

SELECT STUFF((
    SELECT Name + ',' + CAST(Age as varchar(10)) + ',' + Address + '\n\n' 
    FROM TableA
    FOR XML PATH(''), TYPE).value('.', 'NVARCHAR(MAX)'), 1, 0, '') as List

全部返回一个字符串:

Jay,10,11 Happy St\n\nDavid,12,13 Angel St\n\nTom,30,23 Betman St\n\n

注意:如果SELECT语句返回的字符串长度大于8000,则会出现错误或字符串被切断为8000个字符。

答案 1 :(得分:0)

试试这个

SELECT GROUP_CONCAT(`Name` , ',', `Age`, ',', `Address`, '\n\n')
FROM tableA;

答案 2 :(得分:0)

使用此

DECLARE @result varchar(1000)

SET @result = ''

SELECT @result = @result + Name + ',' + Cast(Age as varchar(10)) +','+Address  +'\n\n' FROM TableA
select substring(@result, 0, len(@result) - 1)

输出:Jay,10,11 Happy St \ n \ nDavid,12,13 Angel St \ n \ nTom,30,23 Betman St \ n