我有一个字段数据类型为 NVarchar2(4000) 的表,我正在将数据从 SQL Server 移动到 Oracle Server。 SQL Server 数据类型也是 nvarchar(4000)。我在SQL Server端检查了该字段的最大大小,最大为3996,比4000的限制少了4个字符。
当我尝试将此数据插入 Oracle 时,由于大小而收到错误“LONG”。
这是怎么回事,Oracle NVarchar2(4000) 不允许 4000 个字符吗?如果没有,限制是什么,或者我该如何解决这个问题?
最佳答案
限制为 4000 个字节,而不是 4000 个字符。因此,具有 AL16UTF16 国家字符集的 NVARCHAR2(4000) 将占用最大 4000 字节。
来自oracle docs of MAX_STRING SIZE :
Tables with virtual columns will be updated with new data type metadata for virtual columns of VARCHAR2(4000), 4000-byte NVARCHAR2, or RAW(2000) type.
解决方案:-
此外,如果您想存储 4000 个字符,那么我建议您使用 CLOB
A CLOB (Character Large Object) is an Oracle data type that can hold up to 4 GB of data. CLOBs are handy for storing text.
您可以尝试这样将列数据类型更改为 CLOB:
ALTER TABLE table_name
ADD (tmpcolumn CLOB);
UPDATE table_name SET tmpcolumn =currentnvarcharcolumn;
COMMIT;
ALTER TABLE table_name DROP COLUMN currentnvarcharcolumn;
ALTER TABLE table_name
RENAME COLUMN tmpcolumn TO whatevernameyouwant;
关于sql - Oracle Insert Into NArchar2(4000) 不允许 4000 个字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25452666/