我想更新nvarchar2
列的精度并遇到了一个有趣的案例。我试图在下面复制它:
create table test_table1
(col1 nvarchar2(100));
table TEST_TABLE1 created.
desc test_table1
Name Null Type
---- ---- --------------
COL1 NVARCHAR2(150)
Run Code Online (Sandbox Code Playgroud)
我们观察到nvarchar2列的显示精度是指定精度的 1.5 倍。因此,如果我必须复制类型为 的列的精度NVARCHAR2(375)
,那么我们需要将其声明为NVARCHAR2(250)
.
我试图寻找解释,但找不到任何解释。有没有人对此有任何想法?我们正在使用 Oracle-11g,与 Oracle SQL Developer 连接。
select * from NLS_SESSION_PARAMETERS;
+-------------------------+------------------------------+
| PARAMETER | VALUE |
+-------------------------+------------------------------+
| NLS_LANGUAGE | AMERICAN |
| NLS_TERRITORY | AMERICA |
| NLS_CURRENCY | $ |
| NLS_ISO_CURRENCY | AMERICA |
| NLS_NUMERIC_CHARACTERS | ., |
| NLS_CALENDAR | GREGORIAN |
| …
Run Code Online (Sandbox Code Playgroud)