在本教程中,您将了解oracle nchar
数据类型以及nchar
和char
之间的区别。
oracle nchar
数据类型用于存储固定长度的unicode字符数据。nchar
的字符集只能是al16utf16
或utf8
,在数据库创建时指定为国家字符集。
当使用nchar
列创建表时,nchar
列的最大大小始终在字符长度语义中,例如:
create table nchar_demo (
description nchar(10)
);
在本例中,description
列的最大长度是10
个字符。 对于nchar
列的最大大小,不可能使用字节长度,如下所示:
description nchar(10 byte) -- not possible
nchar
列的最大字节长度取决于当前的国家字符集。 它是每个字符中最大字符长度和最大字节数的乘积。
要查找当前的国家字符集,请使用以下语句:
select
*
from
nls_database_parameters
where
parameter = 'nls_nchar_characterset';
执行上面查询语句,得到类似下面的结果 -
al16utf16
字符集使用2
个字节存储一个字符,所以description
列的最大字节长度为20
个字节。
oracle将nchar
列的最大长度限制为2000
字节。 这意味着一个nchar
列只能容纳2000
字符的1
字节字符或1000
个字符的2
字节字符。
首先,nchar
的最大长度只在字符长度语义上,而char
的最大长度可以是字符长度或字节长度语义。
其次,nchar
将字符存储在国家默认字符集中,而char
将字符存储在默认字符集中。
以下语句返回由char
使用的默认字符集和由nchar
使用的默认国家字符集:
select
*
from
nls_database_parameters
where
parameter in(
'nls_characterset',
'nls_nchar_characterset'
);
执行上面查询语句,得到以下结果(因环境不同而不同) -
在本教程中,您已经了解了oracle nchar
数据类型以及nchar
和char
之间的区别。