ORA-12704: несоответствие набора символов

Ад, когда я делаю:

select COALESCE (CORP_ID, 0) from crmuser.accounts;

Записи CORP_ID, которые являются Null, возвращают 0, но когда я это делаю:

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

Я получаю сообщение об ошибке:

ORA-12704: character set mismatch

Поле EMAIL в NVARCHAR2(30). Это мой тип данных, и если да, то что мне делать, чтобы вернуть значения по умолчанию?


person ErrorNotFoundException    schedule 12.04.2013    source источник
comment
у меня нормально работает...   -  person hsuk    schedule 12.04.2013


Ответы (2)


ты должен сделать

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

чтобы преобразовать литерал в NVARCHAR.

например http://sqlfiddle.com/#!4/73929/1 против http://sqlfiddle.com/#!4/73929/2

person DazzaL    schedule 12.04.2013

Это универсальное исправление работает со столбцами, определенными как VARCHAR2 или NVARCHAR2:

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

Просто добавьте N'' || перед вашей строковой константой, отличной от Unicode.

person Cristi S.    schedule 07.06.2016