求:在同一张表中根据name相同,把后面的text字段全部串成一个文件的SQL

TGITCIC
Java领域优质创作者
博客专家认证
2012-04-03 01:52:00
有一张表:

no name text
1 a hello
2 a world
3 a haha
4 b ccc
5 b ddd

我想根据name字段,如果同名就显示:

a helloworldhaha
b ccdd

怎么用一条SQL语句(不用store procedure)来做到?
...全文
146 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
lanita 2012-04-03
  • 打赏
  • 举报
回复
如果是Oracle 11g R2,可用listagg,就可不用Replace去转换了
select 表.name,listagg(表.text),'') within group (order by 表.name) from 表 group by 表.name;
lanita 2012-04-03
  • 打赏
  • 举报
回复
select 表。name,replace(wm_concat(表。text),',','') from 表 group by 表。name;
ssqtjffcu 2012-04-03
  • 打赏
  • 举报
回复
按你的需求,你怎么拼也会超过32767这个限制
TGITCIC 2012-04-03
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]

引用楼主 的回复:
有一张表:

no name text
1 a hello
2 a world
3 a haha
4 b ccc
5 b ddd

我想根据name字段,如果同名就显示:

a helloworldhaha
b ccdd

怎么用一条SQL语句(不用store pr……
[/Quote]
但现在有一个问题,如果这个text字段里的东西都很长,上千条记录,一旦wm_concat后就会报“字符缓冲区太小”,设到了极限32767还是超长。
不知道还有没有其它办法来拼这个字符串呢?
TGITCIC 2012-04-03
  • 打赏
  • 举报
回复
不过我基本知道了,我试试
TGITCIC 2012-04-03
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]

引用楼主 的回复:
有一张表:

no name text
1 a hello
2 a world
3 a haha
4 b ccc
5 b ddd

我想根据name字段,如果同名就显示:

a helloworldhaha
b ccdd

怎么用一条SQL语句(不用store pr……
[/Quote]

如果我的表名叫sp,你的那段SQL因该怎么写啊?还望指教。
ssqtjffcu 2012-04-03
  • 打赏
  • 举报
回复
没有hardcode,那几条记录只是试例。你可以用你表的数据试试
TGITCIC 2012-04-03
  • 打赏
  • 举报
回复
[Quote=引用楼主 的回复:]
有一张表:

no name text
1 a hello
2 a world
3 a haha
4 b ccc
5 b ddd

我想根据name字段,如果同名就显示:

a helloworldhaha
b ccdd

怎么用一条SQL语句(不用store procedure)来做到?
[/Quote]
这个有点太迁强了吧,如果我这个表里的行数有3000条,而且name不一定只有a,b,c可能还有其它的名字呢?都是HardCode?
ssqtjffcu 2012-04-03
  • 打赏
  • 举报
回复

with t as(
select 1 id,'a' name,'hello' text from dual
union all
select 2,'a','world' from dual
union all
select 3,'a','haha' from dual
union all
select 4,'b','ccc' from dual
union all
select 5,'b','ddd' from dual
)select
name,replace(wm_concat(text),',','')
from t
group by name;


NAME REPLACE(WM_CONCAT(TEXT),',',''
---- --------------------------------------------------------------------------------
a helloworldhaha
b cccddd

17,086

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧