web-dev-qa-db-fra.com

ORA-12704: Non-concordance des jeux de caractères

Enfer quand je fais:

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

Les enregistrements CORP_ID qui sont Null retournent 0 mais quand je le fais:

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

Je reçois une erreur: 

ORA-12704: character set mismatch

Le champ EMAIL dans NVARCHAR2 (30). Is is is datatype et si oui que dois-je faire pour renvoyer les valeurs par défaut

12

tu devrais faire

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

convertir le littéral en NVARCHAR.

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

19
DazzaL

Ce correctif générique fonctionne avec les colonnes définies en tant que VARCHAR2 ou NVARCHAR2:

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

Il suffit d'ajouter N '' || avant votre constante chaîne non-Unicode.

1
Cristi S.