Ответ 1
вы должны сделать
select COALESCE (EMAIL, n'NO EMAIL') from crmuser.accounts
чтобы преобразовать литерал в NVARCHAR.
например, http://sqlfiddle.com/#!4/73929/1 против http://sqlfiddle.com/#!4/73929/2
Черт, когда я это делаю:
select COALESCE (CORP_ID, 0) from crmuser.accounts;
Записи CORP_ID, которые являются нулевыми, возвращают 0, но когда я делаю:
select COALESCE (EMAIL, 'NO EMAIL') from crmuser.accounts
Я получаю сообщение об ошибке:
ORA-12704: character set mismatch
Поле EMAIL в NVARCHAR2 (30). Is is My Datatype, и если да, то что мне делать, чтобы возвращать значения по умолчанию?
вы должны сделать
select COALESCE (EMAIL, n'NO EMAIL') from crmuser.accounts
чтобы преобразовать литерал в NVARCHAR.
например, http://sqlfiddle.com/#!4/73929/1 против http://sqlfiddle.com/#!4/73929/2
Это общее исправление работает со столбцами, определяемыми как VARCHAR2 или NVARCHAR2:
select COALESCE (EMAIL, N'' || 'NO EMAIL') from crmuser.accounts
Просто добавьте N '' || перед строкой константы, не входящей в Unicode.