18

地狱当我这样做:

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 字段。是我的数据类型,如果是,我应该怎么做才能返回默认值?

4

2 回答 2

29

你应该做

select COALESCE (EMAIL, n'NO EMAIL') from crmuser.accounts

将文字转换为 NVARCHAR。

例如 http://sqlfiddle.com/#!4/73929/1http://sqlfiddle.com/#!4/73929/2

于 2013-04-12T09:31:45.227 回答
1

此通用修复适用于定义为 VARCHAR2 或 NVARCHAR2 的列:

select COALESCE (EMAIL, N'' || 'NO EMAIL') from crmuser.accounts

只需添加 N'' || 在您的非 Unicode 字符串常量之前。

于 2016-06-07T01:06:36.730 回答