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中 ORA-12704:字符集不匹配

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

sql中的2列在另一列之下

匹配字符串中的子字符串,允许 1 个字符不匹配

正则表达式;反向引用字符集中不匹配的字符