我正在测试最近转换的数据库为UTF-8。如果我使用长的随机UTF-8字符插入varchar2字段(4000个字符),我得到: [ORA-01704:使用长UTF-8字符集的字符串文字太长]
如果我将字符串剪切为大约3600个字符,则可以正常工作。是什么赋予了?有没有办法插入我的4000个字符?
请注意,字符串中有一些非常奇怪的字符。
感谢。
答案 0 :(得分:1)
单个UTF-8字符长度可超过1个字节。 Oracle的限制为4000字节。因此,少于4000个UTF-8字符将适合4000个字符长度的列。
答案 1 :(得分:1)
独立于字符的最大长度,VARCHAR2数据的长度不能超过4000字节。
因此,声明为varchar2(4000 [char])
的字段可以容纳4000个单字节字符,或者包含较少数量的多字节字符。你不能解决这个问题,至少到12c时varchar2
支持最多32k。
如果确实需要在11g或更早版本中允许4000个多字节字符,则需要将列创建为CLOB
,这可以容纳数十亿字节的数据。 (您可能也希望read more on LOB storage。)
答案 2 :(得分:0)
更好的将列的数据类型更改为clob