私がするとき地獄:
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
この一般的な修正は、VARCHAR2またはNVARCHAR2として定義された列で機能します。
select COALESCE (EMAIL, N'' || 'NO EMAIL') from crmuser.accounts
Nを追加するだけです||非Unicode文字列定数の前。