oracle “ora-01489字符串串联过长”的问题
我写了这样一条语句:SELECTY2.stu_id,Y2.stu_nameFROM(selectto_blob(rawtohex(y1.stu_id))asstu_id,...
我写了这样一条语句:
SELECT Y2.stu_id, Y2.stu_name
FROM (select to_blob(rawtohex(y1.stu_id)) as stu_id,
to_blob(rawtohex(listagg('学号:' || y1.stu_id || ',姓名:' || y1.stu_name,';') within group(order by y1.stu_id))) as stu_name
from zb_1007 y1
group by y1.stu_id) Y2;
查询结果大概有20万条记录记录,结果也是我想要的,但只能看2000条左右,我想获取查询结果的全部数据时,就提示“ora-01489:字符串串联过长”,这有什么办法解决呢?哪位高手可以指点指点,先谢谢啦! 展开
SELECT Y2.stu_id, Y2.stu_name
FROM (select to_blob(rawtohex(y1.stu_id)) as stu_id,
to_blob(rawtohex(listagg('学号:' || y1.stu_id || ',姓名:' || y1.stu_name,';') within group(order by y1.stu_id))) as stu_name
from zb_1007 y1
group by y1.stu_id) Y2;
查询结果大概有20万条记录记录,结果也是我想要的,但只能看2000条左右,我想获取查询结果的全部数据时,就提示“ora-01489:字符串串联过长”,这有什么办法解决呢?哪位高手可以指点指点,先谢谢啦! 展开
3个回答
2014-02-25
展开全部
listagg聚合的结果列大小限制在varchar2类型的最大值内(比如4000).
'学号:' || y1.stu_id || ',姓名:' || y1.stu_name 这一部分超长了 用substr截取下substr('学号:' || y1.stu_id || ',姓名:' || y1.stu_name ,1,2000)
'学号:' || y1.stu_id || ',姓名:' || y1.stu_name 这一部分超长了 用substr截取下substr('学号:' || y1.stu_id || ',姓名:' || y1.stu_name ,1,2000)
展开全部
找了些方法都不能实现,加一层嵌套,把源表要拼接的字段先截取一下,在外层用listagg,colb类型看着太不舒服了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
1、在Oracle PL/SQL中输入缓冲开始命令,并指定输出的文件路径和文件名
spool d:\output.txt
2、在命令中输入相应的SQL查询命令
你的命令...
3、在命令行中输入缓冲结果命令
spool off;
系统将缓冲池的结果输出到“output.txt”中,并以TAB分隔。
spool d:\output.txt
2、在命令中输入相应的SQL查询命令
你的命令...
3、在命令行中输入缓冲结果命令
spool off;
系统将缓冲池的结果输出到“output.txt”中,并以TAB分隔。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询