天天看點

oracle nvarchar2使用場景,Oralce中VARCHAR2()與NVARCHAR2()的差別介紹

一、先來看看Oralce中VARCHAR2()和NVARCHAR2()的官方定義

官方文檔定義如下:

VARCHAR2(size [BYTE | CHAR])

Variable-length character string having maximum length size bytes or characters. Maximum size is 4000 bytes or characters,and minimum is 1 byte or 1 character. You must specify size for VARCHAR2.

BYTE indicates that the column will have byte length semantics. CHAR indicates that the column will have character semantics.

NVARCHAR2(size)

Variable-length Unicode character string having maximum length size characters. The number of bytes can be up to two times size for AL16UTF16 encoding and three times size for UTF8 encoding. Maximum size is determined by the national character set definition,with an upper limit of 4000 bytes. You must specify size for NVARCHAR2.

二、中文翻譯:

VARCHAR2(size [BYTE | CHAR])

具有最大長度的位元組數(bytes)或字元數(char)的可變長度的字元類型。最大長度為4000位元組/字元,最小長度是1位元組/字元。你必須為VARCHAR2()類型指定大小。

BYTE代表該列以位元組計算長度,CHAR代表該列以字元計算長度。

NVARCHAR2(size)

具有最大長度的帶有字元集屬性的可變長度的字元類型。它的長度是AL16UTF16字元集的2倍,UTF8字元集的三倍。它的最大長度取決于字元集,上限位4000位元組。您必須為NVARCHAR2()類型指定大小。

三、實戰演練

使用字元集為UTF8。

create table t_varchar2(name varchar2(6 CHAR));

Table created

sql> insert into t_varchar2 values('中國');

1 row inserted

sql> insert into t_varchar2 values('中華人民共和');

1 row inserted

sql> insert into t_varchar2 values('中華人民共和國');

insert into t_varchar2 values('中華人民共和國')

ORA-12899: 列 "SCOTT"."T_VARCHAR2"."NAME" 的值太大 (實際值: 7,最大值: 6)

sql> create table t_nvarchar2(name nvarchar2(6));

Table created

sql> insert into t_nvarchar2 values('中國');

1 row inserted

sql> insert into t_nvarchar2 values('中華人民共和');

1 row inserted

sql> insert into t_nvarchar2 values('中華人民共和國');

insert into t_nvarchar2 values('中華人民共和國')

ORA-12899: 列 "SCOTT"."T_NVARCHAR2"."NAME" 的值太大 (實際值: 7,最大值: 6)

# 驗證NVARCHAR2(sie)與VARCHAR(size CHAR)存在最大長度不同

sql> create table t_varchar2(name varchar2(4000 CHAR));

Table created

sql> create table t_nvarchar2(name nvarchar2(4000));

create table t_nvarchar2(name nvarchar2(4000))

ORA-00910: 指定的長度對于資料類型而言過長

四、差別總結:

NVARCHAR2(size)與VARCHAR2(size CHAR)相似,唯一的差別是NVARCHAR2(size)的最大長度是4000位元組(實驗測試結果是,在utf8的字元集下,最大長度為2000字元),而VARCHAR2(size CHAR)的最大長度是4000字元。

好了,以上就是這篇文章的全部内容了,希望本文的内容對大家的學習或者工作能帶來一定的幫助,如果有疑問大家可以留言交流。

總結

如果覺得程式設計之家網站内容還不錯,歡迎将程式設計之家網站推薦給程式員好友。

本圖文内容來源于網友網絡收集整理提供,作為學習參考使用,版權屬于原作者。