暂无图片
理解Oracle中Unicode字符集
最近更新:2023-12-19 11:16:35

字符集分类

在Oracle中定义的字符集不能超过2个:

  • 数据库字符集(nls_character)用于CHAR, VARCHAR2, LONG和CLOB数据类型中的数据;
  • 数据库国家字符集(nls_nchar_character)用于存储在NCHAR, NVARCHAR2和NCLOB数据类型中的数据;

使用如下sql检查当前数据库的字符集

SQL> select * from nls_database_parameters where PARAMETER in ('NLS_CHARACTERSET','NLS_NCHAR_CHARACTERSET');

PARAMETER                      VALUE
------------------------------ --------------------
NLS_CHARACTERSET               AL32UTF8
NLS_NCHAR_CHARACTERSET         AL16UTF16

使用如下sql检查当前数据库使用的字符集

SQL> select distinct(nls_charset_name(charsetid)) CHARACTERSET,
decode(type#, 1, decode(charsetform, 1, 'VARCHAR2', 2, 'NVARCHAR2','UNKNOWN'),
9, decode(charsetform, 1, 'VARCHAR', 2, 'NCHAR VARYING', 'UNKNOWN'),
96, decode(charsetform, 1, 'CHAR', 2, 'NCHAR', 'UNKNOWN'),
8, decode(charsetform, 1, 'LONG', 'UNKNOWN'),
112, decode(charsetform, 1, 'CLOB', 2, 'NCLOB', 'UNKNOWN')) TYPES_USED_IN
......