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: 字符集不匹配的主要内容,如果未能解决你的问题,请参考以下文章