ORA-12899: 列”UserName”.”TableName”.”Column”的值太大(实际值: m ,最大值:n ) 问题解决
来源:互联网 发布:国外网络音乐版权 编辑:程序博客网 时间:2024/06/05 08:41
前两天操作数据库表,里面有一个remark字段,更改表中的一个记录后,要把更改原因写入remark字段,是添加(append)到这个字段中。直接使用如下的语句:
Update tableA setremark=concat(remark,’new reason’) where ……
会出现这样的错误: ORA-12899: 列”UserName”.”TableName”.”Column”的值太大(实际值: m ,最大值:n )
但使用 length(remark) 查看,即使加上’new reason’的长度也不会超remark定义的长度值。oracle直接使用remark定义的长度值加上新的字符串的长度的值做为新的字段的定义长度值。
由于查看了要修改的remark字段的实际长度值远未达到定义的长度值,所以,使用cast()函数强制将新的remark值强制类型转换,使其实长度符合规定(remark 字段类型定义为varchar2(300) )。
Update tableA setremark=cast(concat(remark,’new reason’) as varchar2(300)) where ……
Ps:
由于作批量修改,还是发现少量记录的长度添加新字符串后,长度会超过规定的varchar2(300) 的长度。使用上面的语句,会使新的remark值被截断。
后来发现,由于remark字段中大部分是中文,length(remark)返回的是中文字的个数,比如中文字是200个,但转成varchar2类型,就会超过300。
最后,由于以前的remark值的重要性不那么高,于是使用下面的语句,尽量不要截断新加入的字符值:
Update tableA setremark=cast( substr(concat(remark,’new reason’), -length(remark)+length(‘newreason’)) as varchar2(300)) where ……
至此,问题勉强解决。
如果有更好的解决办法,请告知,谢谢!
- ORA-12899: 列”UserName”.”TableName”.”Column”的值太大(实际值: m ,最大值:n ) 问题解决
- ORA-12899: 列 XX 的值太大 (实际值: 521, 最大值:512)
- ORA-12899:列"DP"."META_KPI"."KPI_UNIT"的值太大(实际值:24,最大值20)
- ORA-12899: 列 "RC"."MM_PACKAGE"."PACKAGE_DESC" 的值太大 (实际值: 1262, 最大值: 1024)
- 矩阵n*m找出最大值的行列号及值
- oracle插入值太大,超过限制数的处理ORA-12899,ora-01489
- SELECT IDENT_CURRENT(tableName)和自增长列的纠结
- C语言小试题:找出M行N列矩阵的行最大值,存入数组并输出。
- 将m行*n列数组转换为最大值为1最小值为0的相同shape数组
- 在程序中用stmt.executeQuery("select count(1) from tableName")获取到的表的数据量(条数)与实际值不一样(比实际值多几倍)
- 方法(打印m行n列)
- 两个整数值M和N(M,N均大于0)的最大公约数
- excel sheet的 某列(m*n行) 快速复制到 m行n列区域
- ACM题目:第一行输入n m,第二行输入一个数列,n为数列长度,m为要插入的值,排序后输出,m n为零时退出程序
- C语言 - ACM题目:第一行输入n m,第二行输入一个数列,n为数列长度,m为要插入的值,排序后输出,m n为零时退出程序
- 关于报错"ORA-01747: user.table.column, table.column 或列说明无效"的解决办法
- Oracle11g 的 error "ORA-01747: user.table.column, table.column 或列说明无效
- Oracle11g 的 error "ORA-01747: user.table.column, table.column 或列说明无效
- PureMvc 简介
- Windows服务启动异常 System.ServiceModel.Diagnostics.TraceUtility 的类型初始值设定项引发异常
- 括号匹配dp的再思考
- 一次性验证码
- win7安装ubuntu双系统
- ORA-12899: 列”UserName”.”TableName”.”Column”的值太大(实际值: m ,最大值:n ) 问题解决
- ios代理
- 安卓最快的虚拟机
- 论——中国互联网企业该如何管理?
- mkdir()与 mkdirs()方法的区别 ;目录和文件的区别;绝对路径和相对路径的详解;file的getPath getAbsolutePath和getCanonicalPath的不同
- windows下通过adb为Android手机安装APK
- iOS的横竖屏切换
- 如何使用CSS画一个小三角图标
- redis客户端连接工具