求一将表中数据连接后返回一个字符串的sql(在线等)
大家好!问题如下:
有一个表table1,表有几列(title varchar, time DateTime,Place varchar,dsc varchar). 表数据例如:
客户拜访 2007-1-1 中山北路375 重要客户拜访1
客户拜访 2007-1-1 中山北路376 重要客户拜访2
客户拜访 2007-1-1 中山北路377 重要客户拜访3
要求将表中数据连接后返回一个字符串,记录分隔符: <@> 字段分隔符: <|>
客户拜访 <|> 2007-1-1 <|> 中山北路375 <|> 重要客户拜访1 <@> 客户拜访 <|> 2007-1-1 <|> 中山北路376 <|> 重要客户拜访2 <@> 客户拜访 <|> 2007-1-1 <|> 中山北路377 <|> 重要客户拜访3
在线等,谢谢啦!
------解决方案----------------------创建测试环境
create table table1(title varchar(20), time DateTime,Place varchar(20),dsc varchar(20))
--插入测试数据
insert table1(title,time,Place,dsc)
select '客户拜访 ', '2007-1-1 ', '中山北路375 ', '重要客户拜访1 ' union all
select '客户拜访 ', '2007-1-1 ', '中山北路376 ', '重要客户拜访2 ' union all
select '客户拜访 ', '2007-1-1 ', '中山北路377 ', '重要客户拜访3 '
--求解过程
declare @str varchar(8000) set @str = ' '
select @str = @str + title + ' <|> '+ convert(varchar(10),time,120)+ ' <|> '+Place + ' <|> '+dsc + ' <@> ' from table1
select @str = left(@str,len(@str)-3)
select @str
--删除测试环境
drop table table1
/*--测试结果
客户拜访 <|> 2007-01-01 00:00:00 <|> 中山北路375 <|> 重要客户拜访1 <@> 客户拜访 <|> 2007-01-01 00:00:00 <|> 中山北路376 <|> 重要客户拜访2 <@> 客户拜访 <|> 2007-01-01 00:00:00 <|> 中山北路377 <|> 重要客户拜访3
(所影响的行数为 1 行)
*/