无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站投放广告、加入VIP会员,请联系 微信:wuyouceo
查看: 253|回复: 12
打印 上一主题 下一主题

[分享] 费了一晚上才解决的oracle数据库提示ORA-01489字符串连接的结果过长

  [复制链接]
跳转到指定楼层
1#
发表于 昨天 23:36 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 likeyouli 于 2025-4-4 23:37 编辑

首先说明,字符串肯定没有过长,最多估计都不到100,但递归查询时就是提示错误,见图,代码如下:with jichu as (select shfzhm,yyxmmc,tcje,fyfssj,row_number() over(partition by shfzhm order by fyfssj) as rn from tanghua  where ybxmmc like '%糖化血红蛋白%') ,
digui (shfzhm,yyxmmc,tcje,fyfssj,rn,所有日期) as (
select jichu.*,to_char(jichu.fyfssj,'yyyy-mm-dd') as 所有日期 from jichu  where rn=1
union all
select jichu.shfzhm,jichu.yyxmmc,jichu.tcje,jichu.fyfssj,jichu.rn,  (to_char(jichu.fyfssj,'yyyy-mm-dd') || '>>' ||所有日期)    as 所有日期
from jichu join digui on jichu.shfzhm=digui.shfzhm and jichu.rn=digui.rn+1
)
select * from digui

解决方式见二楼,,高手误嘲笑,实在费了洋劲才解决的,各种百度,deepseek都白搭,偶然测试才发现解决方式,看样子我对oracle数据库的底层了解太浅了,到现在都没明白咋回事,估计to_char转换完是不是有字节大小限制啊, 算了,以后慢慢思考原理.  现心情舒畅的必须向无忧网友报告一下,有遇到同样问题的可参考解决,

..png (41.28 KB, 下载次数: 0)

..png

评分

参与人数 1无忧币 +5 收起 理由
sunsea + 5 很给力!

查看全部评分

2#
 楼主| 发表于 昨天 23:36 | 只看该作者
本帖最后由 likeyouli 于 2025-4-4 23:51 编辑

解决代码:with jichu as (select shfzhm,yyxmmc,tcje,fyfssj,row_number() over(partition by shfzhm order by fyfssj) as rn from tanghua  where ybxmmc like '%糖化血红蛋白%') ,
digui (shfzhm,yyxmmc,tcje,fyfssj,rn,所有日期) as (
select jichu.*,cast(to_char(jichu.fyfssj,'yyyy-mm-dd') as varchar2(4000)) as 所有日期 from jichu  where rn=1
union all
select jichu.shfzhm,jichu.yyxmmc,jichu.tcje,jichu.fyfssj,jichu.rn,  (to_char(jichu.fyfssj,'yyyy-mm-dd') || '>>' ||所有日期)    as 所有日期
from jichu join digui on jichu.shfzhm=digui.shfzhm and jichu.rn=digui.rn+1
)
select * from digui order by shfzhm,fyfssj

即 to_char转换为字符串后,再cast一下所有日期这列才可以, 感觉所有日期这列有点相当于变量, cast as varchar2(4000) 这样就没问题了, 这么简单的问题, 为啥百度,deepseek就解决不了呢?
是问的方式不对,还是怎么回事  ?? 老让我转to_clob,转完又报什么错误, 关键是根本就不需要转,最长的字符也不长  .
    再说句, 这两天光研究递归查询了, 总算有点明白了  

..png (73.89 KB, 下载次数: 0)

..png
回复

使用道具 举报

3#
发表于 16 小时前 | 只看该作者
满满的经验 学习了
回复

使用道具 举报

4#
发表于 10 小时前 | 只看该作者
谢谢楼主分享
回复

使用道具 举报

5#
发表于 8 小时前 | 只看该作者
谢谢楼主分享
回复

使用道具 举报

6#
发表于 8 小时前 | 只看该作者
谢谢分享经验
回复

使用道具 举报

7#
发表于 8 小时前 | 只看该作者
likeyouli 发表于 2025-4-4 23:36
解决代码:with jichu as (select shfzhm,yyxmmc,tcje,fyfssj,row_number() over(partition by shfzhm order ...

66
回复

使用道具 举报

8#
发表于 6 小时前 | 只看该作者
字都认识
膜拜了
回复

使用道具 举报

9#
发表于 5 小时前 | 只看该作者
这是医院的数据库???楼主666啊,无忧真是藏龙卧虎啊。。
回复

使用道具 举报

10#
发表于 5 小时前 | 只看该作者
不容易
回复

使用道具 举报

11#
发表于 5 小时前 | 只看该作者
谢谢分享
回复

使用道具 举报

12#
发表于 4 小时前 | 只看该作者
谢谢楼主分享
回复

使用道具 举报

13#
发表于 3 小时前 | 只看该作者

感谢分享
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2025-4-5 16:17

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表