日期:2014-05-19  浏览次数:20405 次

求一将表中数据连接后返回一个字符串的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 行)
*/