ORACLE ORA-01489: 字符串连接的结果过长 错误的原因 5C

我现在本地有一个项目,是从服务器上复制下来的,与服务器的代码一模一样。
又从服务器上通过expdp的方式备份了数据库,在本地还原。
项目部署完成,启动之后有几个重要的页面报 ORA-01489: 字符串连接的结果过长 这个错误。
不知道是什么原因引起的,刚开始以为是本地数据库实例与服务器的数据库实例编码字符集不同,
但是将编码字符集同步之后也还是报这个错误。 求大佬指点!已经快给我憋疯了!

0

5个回答

重新设计表,把表中的对应的字段设为CLOB类型

0

检查一下你报错页面的sql是否有拼接字符串的sql。参考下:https://blog.csdn.net/e_wsq/article/details/11142181

0

select seq,
name,
substr(nam,2,nvl(instr(nam,'/',2)-2,length(nam))) name1,
(case when lv < 3 then null else substr(nam,instr(nam,'/',1,lv - 1) + 1,instr(nam,'/',1,lv) - instr(nam,'/',1,lv - 1) - 1) end) name2
from (select m.*,
level lv,
SYS_CONNECT_BY_PATH(name, '/') nam,
CONNECT_BY_ROOT parent_seq seq1
from m
connect by prior seq = parent_seq)
where seq1 is null order by seq;

执行这段程序
ora-01489报错字符过长

用to_clob还是同样报错

0

字符串过长,检查报错的sql,找到对应的字段,再根据情况优化数据库或sql

0

数据库字段过长,修改数据的字段长度,nvarchar2(20) ->nvarchar2(50)

0
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
listagg 字符串连接的结果过长问题解决
因为业务需要对一些数据进行统计,需要对表涉及到的不同部门的进行过任务的用户id进行拼接之后到java代码中进行去重计数。rnrn开始准备使用WM_CONCAT,放进去之后发现提示没有这个函数。rn查了一下原来是因为这个函数依赖WMSYS用户,这个版本并没有配置,无奈只能退而求其次选择了listagg函数。rnrn一轮下来效果不错,想要的效果可以实现。rnSELECTn r.department_i
oracle listagg函数字符串链接的结果过长
用listagg函数用,拼接时遇到字符串链接的结果过长,改用nnrtrim(xmlagg(XMLELEMENT(e,t.id,',').EXTRACT('//text()')).getclobval(),',') as idsnn解决问题nn其中t.id是要拼接的列,rtrim用来去掉首尾特殊字符...
行专列listagg返回的是varchar2,长度过长报错问题
select LISTAGG (a.nename,',') within group (order by a.nename) nename from rn    (select distinct d.ne_name as nename from t_eom_alarm_define d where d.work_id=#PM_ID#) a rnrnrn行专列过长,又不能改成clob类型,所以或行专
oracle 使用listagg函数后 字符串连接的结果过长
oracle 使用listagg函数后 字符串连接的结果过长最终解决nnnnSELECTn r.department_id law_dept_id,n (n SELECTn xmlagg(xmlparse(content rt.extracted_person_ids||',' wellformed) order by rt.extracted_p...
ORA-01704: 文字字符串过长成功解决
insert into table values(a,110,'很长的文字'); rnORA-01704: 文字字符串过长! rnrnrndeclare rnv_clob clob :='很长的文字'; rnbegin rn  insert into tablename values(a,110,v_clob); rnend; rnrnrn隐式转换,oracle默认把字符串 转换成 varchar
【解决方案】Oracle插入/更新CLOB字段报ORA-01704:字符串文字太长
&#13;n 【解决方案】Oracle插入/更新CLOB字段报ORA-01704:字符串文字太长 &#13;n&#13;n &#13;n&#13;n&#13;n&#13;n解决...
Oracle插入/更新CLOB字段报ORA-01704:字符串文字太长【解决方案】
rn最近遇到了一个这样的问题,在对Oracle数据库插入或者更新CLOB字段的时候,直接拼接了一个INSERT INTO和UPDATE语句,类似下面这种:rnINSERT INTO 表名(字段1, 字段2, CLOB字段) VALUES ('XX', 'XXX', '内容非常多');rnUPDATE 表名 T SET T.CLOB字段名 = '内容非常多';rn 在执行SQL的时候报了[ORA-...
Oracle 解决【ORA-01704:字符串文字太长】
我们在插入数据特别是数据类型为clob的时候经常遇到ORA-01704:字符串文字太长这个错误,我们可以使用存储过程来解决这个问题。http://www.cnblogs.com/senyier/p/6689314.html--DECLARE clobValue clob ;BEGIN clobValue := to_clob('诊疗经过:对症支持治疗,防治并发症,同时行康复训练,促使瘫痪肢体功能
Oracle ORA-01704文字字符串过长
产生这种现象的原因:nn      在Oracle中,表的某字段为Clob类型,我们知道,此种类型不是能存4G的数据么,为什么我插入多于4000个字符就会报错呢?原因是这样的,Oracle中,使用inset或者update更新数据库表时,默认把字符串转化成VARCHAR2类型,而VARCHAR2类型最大长度为4000,所以当插入数据大于4000时,就会报ORA-01704。nn解决方法:
字符串最大长度限制ORA 01489
分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow也欢迎大家转载本篇文章。分享知识,造福人民,实现我们中华民族伟大复兴!&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 字符串最大长度限制OR
oracle中拼接sql过长的解决方法
oracle中拼接sql过长的解决方法
oracle中进行两个字符串的连接的函数
update projectinformationrnset projectmember=(rnselect projectmember from projectinformation where projectnum = 1) || ',郭强大'rnwhere projectnum = 1;rn/*rn可以使用"||",也可以使用"concat函数"rn*/
SYS_CONNECT_BY_PATH 函数综合应用 应用多字段拼在一行字符串
SELECTrn    f.nowdate AS "nowdate",rn    f.DAYOFWEEK "dayofweek",rn    f.WEEKOFMONTH AS "weekofmonth",rn    f.YEARMONTH "yearmonth",rn    COUNT (1) AS "messageNum",rn    LTRIM (rn        MAX (rn      
Oracle插入或修改 报ORA-01704: 文字字符串太长
原因分析:sql在执行之前会把所有字符类型的数据转换成VARCHAR2类型,而VARCHAR2类型的最大长度为4000,所以当字符串超过这个长度就会转换失败。n方法1:ndeclare nv_clob clob; nbeginn v_clob :='很长的文字';n insert into tablename values(a,110,v_clob); nend; nnclob 是字段类型n方法...
sql语句脚本
ORA-01489错误
Oracle SQL函数listagg实现多行字符串连接
Oracle SQL函数listagg实现多行字符串连接
listagg 字符串连接的结果过长
若表client_grouprnoid facility_oid client_group_descrn1 2 Arn2 2 Brn3 2 Crnrnselect cg.facility_oid,listagg(cg.client_group_desc,',') within group (rn ORDER BY cg.client_group_desc) AS client_group_desc_list from client_group cg group by cg.facility_oid;rnrn输出结果为rnfacility_oid client_group_desc_listrn2 A,B,Crnrn若这里的client_group_desc非常长,比如把A 换成2000个A,B换成2000Brn则client_group_desc_list的长度大于4000,就会报 字符串连接的结果过长 的错误rnrn请问有没有简单点的办法来解决这个问题呢?rnrn比如能否对listagg的返回值进行修改,让它自动截掉4000后的字符,或者修改listagg的返回值类型,将varchar2换成clob?
ora-01489报错字符串过长
[code=SQL]select seq,rn name,rn substr(nam,2,nvl(instr(nam,'/',2)-2,length(nam))) name1,rn (case when lv < 3 then null else substr(nam,instr(nam,'/',1,lv - 1) + 1,instr(nam,'/',1,lv) - instr(nam,'/',1,lv - 1) - 1) end) name2rn from (select m.*,rn level lv,rn SYS_CONNECT_BY_PATH(name, '/') nam,rn CONNECT_BY_ROOT parent_seq seq1rn from mrn connect by prior seq = parent_seq)rn where seq1 is null order by seq;[/code]rn执行这段程序rnora-01489报错字符过长rnrnrn用to_clob还是同样报错rn[code=SQL] select seq,rn name,rn substr(nam,2,nvl(instr(nam,'/',2)-2,length(nam))) name1,rn (case when lv < 3 then null else substr(nam,instr(nam,'/',1,lv - 1) + 1,instr(nam,'/',1,lv) - instr(nam,'/',1,lv - 1) - 1) end) name2rn from (select m.*,rn level lv,rn to_clob(SYS_CONNECT_BY_PATH(name, '/')) nam,rn CONNECT_BY_ROOT parent_seq seq1rn from mrn connect by prior seq = parent_seq)rn where seq1 is null order by seq;[/code]rn rn我没其他办法了 rnrnrn我就是想找出树的路径,然后把路径按照‘/'分成多个字段
Oracle 字符串拼接--concat/||
方法1:n  select concat(concat(name,'n '),score)------------------ concat:  在oracle中只可以连接两个字符n      from STUDENTt n方法2:n    select name||' '||scorefrom studentn    select name||' '||coursenamefrom
sqlldr报超出字符长度错误
sqlldr报超出字符长度错误,可以参考的好资料。
sqlldr长数据导入失败
用sqlldr导入数据时总是会有一个.bad文件,发现有一列数据极长,稍统计有160多个字,把列表增加到4000字节仍不行,遍求原因不得,部门大佬一句点破,“sqlldr有字段限制,搜一下就行”nn网上有说265字节限制还有255字节,总的来说不过三百,我的那部分数据肯定不行的。nn贴一下我的代码:(使代码通过的方法就是加那句char,只要后面够最长的字节就好)nnnOPTIONS (skip=1...
Trafodion SQL执行时间过长原因分析
在数据库执行一个查询的时候,有时候会碰到因为数据量超大或者由于其他原因(如统计信息不准确导致查询计划不正确),导致SQL一直处于执行状态。那如果跟踪下正在执行的时间比较长的QUERY语句的状态呢,下面具体介绍一下。 nTrafodion安装目录下面,有一个工具叫”offender”,可以通过如下方式定位,[trafodion@n12 ~]$ cdwn[trafodion@n12 esgynDB-2.
oracle插入值太大,超过限制数的处理ORA-12899,ora-01489
很多时间,再插入值的时候,会出现超出指定的限制的最大的数。如果允许精度确实可以使用substr或者rpad来限制返回的长度。如果不允许精度确实,则需要rn增加字段的精度。rnrnrnSQL> desc er_test;rn Name                                      Null?    Typern ------------------------------
Oracle ORA-12899错误的解决方法
iamlaosong文rn数据导入时报ORA-12899错误,即插入的数据长度超出字段的设置长度,实际长度并不长,这是由于Oracle字符集不同,汉字占的长度不同造成的。中文在ZHS16GBK中占2个字节,在UTF-8中却占3个字节,所以汉字导入UTF-8字符集的数据库就很容易出现字段长度不够,解决办法,一个是增加字段长度,还有就是修改字符集。rn如果系统中已经存在很多数据,建议修改字段长度,因为
SQL 错误: ORA-00972: 标识符过长
出现这个错误的原因,是插入数据时,values内用的是双引号,换成单引号即可。
Oracle 字符串文字太长
表 A 中有个字段为 备注 remark,用户在添加备注的时候超过4000个中文字符,保存到数据库的时候失败!nn  nn这个时候就需要对字段做一个拓展,拓展为nnLONG    超长字符串n NCLOB    根据字符集而定的字符数据n CLOB    字符数据n本例就以LONG为例做一个示范.nn第一步:新增一个为LONG类型的新字段remarkbaknnnalter table A add ...
oracle 多条查询记录 结果连接成以逗号分割字符串
rn--查询rnselect wmsys.wm_concat(province_no) province_no from P_PROVINCE_FUNCTION where province_id='201';rn rn--更新rnupdate P_PROVINCE_ATTRIBUTION a set NOS=(select wmsys.wm_concat(province_no) provinc...
行列转换之字符串拼接(二)、LISTAGG函数
字符串拼接(String Aggregation Techniques)是数据处理时经常需要用到一个技术,比如需要按时间顺序拼装一个快递的运输记录,或者将流程中各个环节的处理人拼装为一个字符串。nnOracle中有多种方法来实现这个功能,这里罗列几种,详细用法可以参考下面的文章: n - WM_CONCAT函数 n - LISTAGG函数 n - 自定义聚合函数nn本文介绍第二种:LISTA...
PL/SQL(或者说是Oracle)错误ORA-00972:标识符过长
PL/SQL(或者说是Oracle)错误ORA-00972:标识符过长rnrnrnrnrnrnrnrnrnrnOracle中表名,列名,标识列字符不能超过30个字符
oracle多个结果集拼接字符串
要求根据查询条件返回每个用户对于的欠费量、欠费金额、欠费次数、欠费期间(欠费期间是多个以,分割)rnrn[code=&quot;java&quot;]select rnm.yqzh,max(m.hz_mc),sum(m.sl),sum(m.yje),sum(m.num),max(m.dzms),rnlistagg(m.cbqijian , ',') withinrn GROUP(rn order by m.y...
oracle经典错误
ORACLE的ORA-03113错误原因及解决办法
在Oracle中字段类型设置为clob时,报 ORA-01704:字符串文字太长
         单独的在Oracle的表中把字段的数据类型设置为clob后,用insert into 往里面插入数据的时候,当往里面插入的字节小于2000时是可以正常插入的,当插入的数据大于2000个字节的时候就会报 ORA-01704:字符串文字太长nn   解决办法:nnn  Declarenn           V_LANG CLOB;nn BEGINnn           V_LAN...
ORA-01704: 文字字符串过长
产生这种现象的原因rn      在Oracle中,表的某字段为Clob类型,我们知道,此种类型不是能存4G的数据么,为什么我插入多于4000个字符就会报错呢?原因是这样的,Oracle中,使用inset或者update更新数据库表时,默认把字符串转化成VARCHAR2类型,而VARCHAR2类型最大长度为4000,所以当插入数据大于4000时,就会报ORA-01704。rn解决方法rn     
记一次索引过长的问题
问题描述:使用esjob 的数据库自动记录job运行情况,表和记录都有esJob 自动创建和插入数据。在测试和本地环境均没有问题:生产爆出如下异常:com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Specified key was too long; max key length is 767 bytesnn解决: 异常信息...
oracle round后SQL过长出现.11问题处理
[b][color=red]oracle 保留两位小数位原本用 round就可以直接搞定,但是当SQL语句过长执行就会出现问题rn遇到如:0.11,0.98 等之类小数点前面是0的就会出现 .11,.98 省略前面的0 rn解决方案 就是[/color] [color=green]to_char[/color]如下:rn[color=green] select to_char(round('...
ORACLE报文字字符串过长错误
对LONG类型插入文本长度超过4000字节,报错:rnORA-01704: 文字字符串过长rnrnSQL语句中直接插入超过4000字节的问题暂未能解决。rn在JAVA中可如下处理:rnrn****************************************rn使用JDBC存取ORACLE中的LONG类型的数据rn*************************************...
oracle中字符串连接符||
1、oracle和mysql都遵循sql99标准(ANSI制定的,在1999年)nnoracle中 select 后面必须要有from关键字nn在mysql中select concat('hello',' world');正确,但是在oracle中错误nnhadoop中hive(蜂巢)数据库支持sql92标准nn2、dual:伪表nnselect concat('hello',' world') ...
wm_concat和listagg用法,合并行数据
rn方法一 wn_concat() 函数rn1、把以下图中Name一样的数据合并为一条,而且NO的值要这样显示如 C.1,C.2rnrn2、实现这种效果的操作如下,先把Name的值进行分组(group by),再把NO的值用 wm_concat()函数合并起来(注意:记得要to_char(),要不然数据显示不出来)rnrn rn方法二 listagg() 函数rn rn第一步和上面的一致rn使用 ...
Oracle建表时为什么提示“ORA-00972:标识符过长
ORA-00972 identifier is too longrnrnCause: The name of a schema object exceeds 30 characters. Schema objects are tables, clusters, views, indexes, synonyms, tablespaces, and usernames.rnrnAction: Shor...
解决参数列表过长的问题
ls | xargs -t -I {} mv {} ../dir/    #将当前目录下的文件移动到../matchresrnrnrnrnrn模仿 完成cat参数列表过长问题rnrnrnls | xargs -t -I {} cat {} >> all
文章热词 机器学习教程 Objective-C培训 交互设计视频教程 颜色模型 设计制作学习
相关热词 mysql关联查询两次本表 native底部 react extjs glyph 图标 学习人工智能的原因 大数据学习原因