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


使用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個字符。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM