我创建了 2 个表并插入数据如下---
SQL> create table t (aa nvarchar2(10));
Table created.
SQL> create table t1 (aa varchar2(10));
Table created.
现在,插入一些法语字符,如下所示——
SQL> insert into t values ('Éé, Eè, Eê, Eë');
insert into t values ('Éé, Eè, Eê, Eë')
*
ERROR at line 1:
ORA-12899: value too large for column "CDUREFDB"."T"."AA" (actual: 14, maximum:
10)
SQL> insert into t1 values ('Éé, Eè, Eê, Eë');
insert into t1 values ('Éé, Eè, Eê, Eë')
*
ERROR at line 1:
ORA-12899: value too large for column "CDUREFDB"."T1"."AA" (actual: 21,
maximum: 10)
问题是为什么两个插入中的错误消息存在差异。
以下是 NLS 参数详细信息:
SQL> SELECT *
2 FROM v$nls_parameters
3 WHERE parameter LIKE '%CHARACTERSET'
4 ;
PARAMETER
----------------------------------------------------------------
VALUE
----------------------------------------------------------------
NLS_CHARACTERSET
AL32UTF8
NLS_NCHAR_CHARACTERSET
UTF8
我正在使用Oracle 11g
版本。
另外,是否建议NVARCHAR2(NCHAR etc.)
在 oracle 中用于非英文字符?
谢谢。