【问题标题】:ORA-12704: character set mismatchORA-12704: 字符集不匹配
【发布时间】: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 字段。是我的数据类型,如果是,我应该怎么做才能返回默认值?

【问题讨论】:

  • 对我来说很好......

标签: oracle oracle11g coalesce


【解决方案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 字符串常量之前。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-10-02
      • 1970-01-01
      • 1970-01-01
      • 2015-01-11
      • 2010-11-26
      相关资源
      最近更新 更多