varchar2转化nvarchar2类型乱码

原创 2013年12月03日 17:00:50
开发人员有个需求,需将一个字符串,转成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
  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>

问题解决。

相关文章推荐

坑爹的NVARCHAR2

今天帮一个学生优化SQL,遇到NVARCHAR2问题。具体SQL因为涉及保密就不贴了。但是可以模拟一下。create table t1(id number,name nvarchar2(200)); ...

UTL_RAW.CAST_TO_RAW解决不同字符集的数据库之间的相互访问

由于字符集不同所以数据库访问常常出现乱码,可以使用UTL_RAW.CAST_TO_RAW函数来解决这个问题 如下:  select PATIENTID, VISITID, ...

Oracle-blob转字符串遇到中文乱码的问题

项目中最近遇到个比较头疼的问题,因为使用了Liferay平台,使用封装后的hql查询导致取不出来数据库中的blob字段,无奈之下只好换个思路:直接在数据库这边先把blob字段转成字符串 但脚本执行...
  • mxmxz
  • mxmxz
  • 2017年08月14日 23:23
  • 828

oracle blob字段转为varchar2

注意 return clob 类型。 varchar2  在schema级和在PL/SQL代码级长度限制不同 4000 ,32767  所以反回用 clob类型。   c...

oracle中nvarchar2字符集不匹配

oracle当多表union时遇到nvarchar2类型时报错 字符集不匹配对使用nvarchar的地方,加上 to_char( nvarchar 的变量或字段 )如:select to_char(n...

utl_raw.cast_to_varchar2 函数转换字符串有很多空字符问题

使用utl_raw.cast_to_varchar2转换为var replace(utl_raw.cast_to_varchar2(xxx),unistr('\0000'),'')...

Oracle中将含数据的BLOB字段转化为含数据的varchar2字段

在Oracle数据库中有一张表为questionbasetbl。里面有一个字段answer,类型为blob。现在需求变了,要将字段answer字段的类型改成varchar2。 整体上的思路: ...

解决不同字符集数据库数据传输中文乱码问题

有两个数据库,使用US7ASCII字符集的数据库A和使用ZHS16GBK字符集的数据库B,如果想将数据库A中的中文字插入到B数据库,直接使用insert select会导致中文乱码。 一开始考虑的解...

Oracle中编码与字符转换

一、ASCII码与字符相互转换

交叉报表列头排序时遇到的oracle问题—oracle ORA-12704:字符集不匹配、varchar2转化为nvarchar2字符缺失、case when else后的字符类型要一致

在做交叉报表列头的排序时,遇到这三个问题,下面具体来说一下。 设计的数据库的表结构如图1所示: 图1 要处出来student_name_,s.grade_,s.subject_name_,这...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:varchar2转化nvarchar2类型乱码
举报原因:
原因补充:

(最多只允许输入30个字)