本教程向您介绍了oracle nvarchar2
数据类型,并解释了nvarchar2
和varchar2
之间的区别。
nvarchar2
是可以存储unicode字符的unicode数据类型。 nvarchar2
的字符集是在数据库创建时指定的国家字符集。
要在数据库中查找nvarchar2
的字符集,请使用以下查询:
select
*
from
nls_database_parameters
where
parameter = 'nls_nchar_characterset';
执行上面查询语句,得到以下结果(因环境不同而不同)-
在笔者的oracle数据库服务器中,nvarchar2
数据类型使用al16utf16
字符集,它使用utf-16
编码对unicode数据进行编码。al16utf16
使用2
个字节来存储一个字符。
nvarchar2
存储可变长度的字符数据。 使用nvarchar2
列创建表时,最大长度始终为字符长度语义,也是nvarchar2
数据类型的默认值,也是唯一的长度语义。
以下语句创建一个最大长度为50
个字符的nvarchar2
列的表。
create table nvarchar2_demo (
description nvarchar2(50)
);
由于当前的国家字符集是:utf-16
,所以描述列的最大字节长度是200
字节。
请注意,最大字节长度是每个字符中最大字符长度和最大字节数的乘积。
以下语句在nvarchar2_demo
表中插入一行:
insert into nvarchar2_demo
values('abcde');
使用dump()
函数来查看存储在nvarchar2_demo
表中的值的详细信息:
select
description,
dump(description,1016)
from
nvarchar2_demo;
执行上面查询语句,得到以下结果 -
如结果所示,数据类型代码1
是10
个字节(5
个字符,每个2
个字节)。
首先,varchar2
的最大大小可以是字节或字符,而nvarchar2
的最大大小只能是字符。 另外,nvarchar2
的最大字节长度取决于配置的国家字符集。
其次,varchar2
列只能将字符存储在默认字符集中,而nvarchar2
则可以存储几乎任何字符
以下查询返回varchar2
数据类型使用的缺省字符集。
select
*
from
nls_database_parameters
where
parameter = 'nls_characterset';
执行上面查询语句,得到以下结果 -
在本教程中,您已经了解了oracle nvarchar2
的用法,以及nvarchar2
和varchar2
之间的区别。