web-dev-qa-db-ja.com

ORA-12704:文字セットが一致しません

私がするとき地獄:

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フィールド。私のデータ型は何ですか?そうであれば、デフォルト値を返すにはどうすればよいですか?

やったほうがいい

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

リテラルをNVARCHARに変換します。

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

20
DazzaL

この一般的な修正は、VARCHAR2またはNVARCHAR2として定義された列で機能します。

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

Nを追加するだけです||非Unicode文字列定数の前。

1
Cristi S.