[Oracle]ORA-01461: can bind a LONG value only for insert into a LONG column

本文详细介绍了在Oracle数据库中使用VARCHAR2和CLOB数据类型时的注意事项,包括长度限制、转换方法及可能遇到的问题。同时解释了不同字符集下字符长度的计算方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

使用oracle时,如果插入字符串超出字符串长度会报这一错误。因为VARCHAR2的oracle长度限制是4000,所以如果长度为4000还放不下,可以考虑将数据类型改为clob(character large object)类型。clob类型少于4000个字节,会与记录放在一起存储,超过4000个字符,就会分开存储,个人估计会在记录里计入分开存储的入口地址。clob最大支持4G字节。

但是oracle修改把列类型从varchar修改为clob类型,是会报错的,错误是ORA-22858: 数据类型的变更无效。

这时候只能将表数据备份后,删表重建。

-------------------分割线----------------

下面讲一下VARCHAR2长度的计算。

限定字符集SIMPLIFIED CHINESE_CHINA.ZHS16GBK(通过select userenv('language') from dual;)查看

此字符集下,英文字符占用字节数为1,中文字符占用字节数2。

而VARCHAR2的长度指的是字节数,VARCHAR2(4000)可以保存4000个英文字符或者2000个中文字符。

NVARCHAR2的长度指的是字符数,NVARCHAR只能保存AL16UTF16 or UTF8这两种字符集,最大支持2000个字符。

 

转载于:https://www.cnblogs.com/wendelhuang/p/7279265.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值