只是徘徊,有什么方法可以从表中选择所有数据到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脚本中使用吗?
答案 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