您好,欢迎访问一九零五行业门户网

varchar2转化nvarchar2类型乱码

开发人员有个需求,需将一个字符串,转成nvarchar2类型。但是测试是乱码,例句如下:sqlgt; select(selectutl_raw.cast_to_nvar
开发人员有个需求,需将一个字符串,,转成nvarchar2类型。但是测试是乱码,例句如下:
sql> select(selectutl_raw.cast_to_nvarchar2(utl_raw.cast_to_raw('i am nvarchar2string')) from dual) from dual;
(selectutl_raw.cast_to_nvarchar2(utl_raw.cast_to_raw('iamnvarchar2string'))fromdual)
------------------------------------------------------------------------------------------------------------------------------------
cast_to_raw函数按照缺省字符集将varchar2字符串转换为raw,而cast_to_nvarchar2是将raw转换成nvarchar2类型,nvarchar2依据所选的国家字符集。
sql> col value formata22               
sql> select * from nls_database_parameters
  2  where parameterin('nls_nchar_characterset','nls_characterset');
parameter                    value
------------------------------ ----------------------
nls_nchar_characterset        al16utf16
nls_characterset              zhs16gbk
数据库缺省字符集zhs16gbk,而国家字符集为al16utf16,将zhs16gbk的raw用al16utf16显示,会产生乱码。如果不产生乱码可以将原字符串'iam nvarchar2 string'转换国家字符集,输出类型为nvarchar2。
sql> select (selectutl_raw.cast_to_nvarchar2(utl_raw.cast_to_raw(translate('i amnvarchar2 string' using nchar_cs))) from dual) from dual;
(selectutl_raw.cast_to_nvarchar2(utl_raw.cast_to_raw(translate('iamnvarchar2string'usingnchar_cs)))fromdual)
------------------------------------------------------------------------------------------------------------------------------------
i am nvarchar2 string
sql>
问题解决。
其它类似信息

推荐信息