ORA-12704: 字符集不匹配
Posted
技术标签:
【中文标题】ORA-12704: 字符集不匹配【英文标题】:ORA-12704: character set mismatch 【发布时间】:2013-04-04 17:38:53 【问题描述】:当我这样做的时候该死:
select COALESCE (CORP_ID, 0) from crmuser.accounts;
为 Null 的 CORP_ID 记录返回 0 但当我这样做时:
select COALESCE (EMAIL, 'NO EMAIL') from crmuser.accounts
我得到一个错误:
ORA-12704: character set mismatch
NVARCHAR2(30) 中的 EMAIL 字段。是我的数据类型,如果是,我应该怎么做才能返回默认值?
【问题讨论】:
对我来说很好...... 【参考方案1】:你应该这样做
select COALESCE (EMAIL, n'NO EMAIL') from crmuser.accounts
将文字转换为 NVARCHAR。
例如 http://sqlfiddle.com/#!4/73929/1 对比 http://sqlfiddle.com/#!4/73929/2
【讨论】:
【参考方案2】:此通用修复适用于定义为 VARCHAR2 或 NVARCHAR2 的列:
select COALESCE (EMAIL, N'' || 'NO EMAIL') from crmuser.accounts
只需添加 N'' ||在非 Unicode 字符串常量之前。
【讨论】:
以上是关于ORA-12704: 字符集不匹配的主要内容,如果未能解决你的问题,请参考以下文章
ORA-12704: 执行可为空的 NVARCHAR 的多行 INSERT 时字符集不匹配
交叉报表列头排序时遇到的oracle问题—oracle ORA-12704:字符集不匹配varchar2转化为nvarchar2字符缺失case when else后的字符类型要一致