Précédent   Forum des professionnels en informatique > Bases de données > Oracle > SQL
SQL Forum d'entraide sur le SQL pour Oracle
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 08/01/2008, 10h45   #1
Rédacteur

 
Avatar de Louis-Guillaume Morand
 
Homme Louis-Guillaume MORAND
Consultant @ Microsoft
Inscription : mars 2003
Messages : 10 713
Détails du profil
Informations personnelles :
Nom : Homme Louis-Guillaume MORAND
Localisation : France, Hauts de Seine (Île de France)

Informations professionnelles :
Activité : Consultant @ Microsoft
Secteur : Conseil

Informations forums :
Inscription : mars 2003
Messages : 10 713
Points : 15 946
Points : 15 946
Par défaut Problème avec la méthode coalesce

Bonjour,

J'ai un champ option_type de type nvarchar2 et j'aimerai afficher 'test" quand celui-ci est null

j'ai voulu écrire
Code :
coalesce(option_type,'test')
mais il me sort PL/SQL: ORA-12704: character set mismatch

idem, si j'essaie de passer par un CASE WHEN

J'ai cherché 20 bonnes minutes sur le net, sans comprendre ce qui ne va pas car les exemples sont comme le mien :/

merci d'avance
Louis-Guillaume Morand est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/01/2008, 11h02   #2
Membre chevronné
 
Avatar de pinocchio
 
Homme François
Développeur informatique
Inscription : novembre 2002
Messages : 773
Détails du profil
Informations personnelles :
Nom : Homme François
Âge : 35
Localisation : France, Yvelines (Île de France)

Informations professionnelles :
Activité : Développeur informatique
Secteur : Service public

Informations forums :
Inscription : novembre 2002
Messages : 773
Points : 787
Points : 787
Bonjour,
Essaye avec la fonction nvl(champ, valeur qui remplace le null)
Code :
nvl(option_type, 'test')
Cdt
Pinocchio
__________________
La SNCF est mon ami
blog PARIS-GRANVILLE
Inscription au panel IPSOS (possibilité d'avoir des bons d'achats)
pinocchio est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/01/2008, 11h07   #3
Rédacteur

 
Avatar de Louis-Guillaume Morand
 
Homme Louis-Guillaume MORAND
Consultant @ Microsoft
Inscription : mars 2003
Messages : 10 713
Détails du profil
Informations personnelles :
Nom : Homme Louis-Guillaume MORAND
Localisation : France, Hauts de Seine (Île de France)

Informations professionnelles :
Activité : Consultant @ Microsoft
Secteur : Conseil

Informations forums :
Inscription : mars 2003
Messages : 10 713
Points : 15 946
Points : 15 946
ca marche nickel. merci
pour ma curiosité perso, serais-tu m'expliquer pourquoi coalesce marche avec plusieurs colonne en paramètre mais pas de chaine de caractère?
Louis-Guillaume Morand est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/01/2008, 11h16   #4
Membre Expert
 
Homme
Expert Datawarehouses + BO (sur BDD Oracle et SQL Server)
Inscription : mars 2003
Messages : 645
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 41
Localisation : France, Rhône (Rhône Alpes)

Informations professionnelles :
Activité : Expert Datawarehouses + BO (sur BDD Oracle et SQL Server)

Informations forums :
Inscription : mars 2003
Messages : 645
Points : 1 165
Points : 1 165
jamais essayé mais il n'y aurait pas un truc comme cela qu'il faudrait faire ?:

Code :
coalesce(option_type,to_nchar('test'))
phili_b est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/01/2008, 11h20   #5
Rédacteur

 
Avatar de Louis-Guillaume Morand
 
Homme Louis-Guillaume MORAND
Consultant @ Microsoft
Inscription : mars 2003
Messages : 10 713
Détails du profil
Informations personnelles :
Nom : Homme Louis-Guillaume MORAND
Localisation : France, Hauts de Seine (Île de France)

Informations professionnelles :
Activité : Consultant @ Microsoft
Secteur : Conseil

Informations forums :
Inscription : mars 2003
Messages : 10 713
Points : 15 946
Points : 15 946
Citation:
Envoyé par phili_b Voir le message
jamais essayé mais il n'y aurait pas un truc comme cela qu'il faudrait faire ?:

Code :
coalesce(option_type,to_nchar('test'))
c'est ce que j'ai pensé à un moment,, la conversion de type j'ai tenté un malheureux
Code :
coalesce(option_type,Convert(nvarchar,'test'))
mais il me disait ne pas connaitre nvarchar...

d'une certaine façon je pense comprendre qu'il suppose que par défaut 'test' est de type varchar et non nvarchar mais dans ce cas, pourquoi la méthod NVL marche

__________________
moi c'est Louis-Guillaume, ni Louis, ni Guillaume mais Louis-Guillaume et je n'aide pas ceux qui écorchent mon nom
Louis-Guillaume Morand est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/01/2008, 15h30   #6
Expert Confirmé
 
Inscription : février 2006
Messages : 3 433
Détails du profil
Informations forums :
Inscription : février 2006
Messages : 3 433
Points : 3 462
Points : 3 462
Citation:
Envoyé par Louis-Guillaume Morand Voir le message
ca marche nickel. merci
pour ma curiosité perso, serais-tu m'expliquer pourquoi coalesce marche avec plusieurs colonne en paramètre mais pas de chaine de caractère?
NVARCHAR2 et VARCHAR2 ne sont pas exactement les mêmes types:
NVARCHAR2 stocke des chaînes dans le jeu "national" de la base
VARCHAR2 stocke des chaînes dans le jeu "normal" de la base.
Chaque base a 2 jeux de caractères: le "normal" et le "national".

Ce n'est pas un problème de la fonction coalesce mais un problème de compatibilité de type de données liés au jeux de caractères.

Citation:
ORA-12704 character set mismatch

Cause: One of the following:

The string operands (other than an NLSPARAMS argument) to an operator or built-in function do not have the same character set.
An NLSPARAMS operand is not in the database character set.
String data with character set other than the database character set is passed to a built-in function not expecting it.
The second argument to CHR() or CSCONVERT() is not CHAR_CS or NCHAR_CS.
A string expression in the VALUES clause of an INSERT statement, or the SET clause of an UPDATE statement, does not have the same character set as the column into which the value would be inserted.
A value provided in a DEFAULT clause when creating a table does not have the same character set as declared for the column.
An argument to a PL/SQL function does not conform to the character set requirements of the corresponding parameter.
Action: Strings declared with NCHAR or NCHAR VARYING do not interoperate with strings declared with CHAR or VARCHAR2. Use TRANSLATE() function to explicitly convert one to the other.
__________________
P. Forstmann

AskTom Forums OTN doc 8, 9, 10 et 11
pifor est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 14h19.


 
 
 
 
Partenaires

Hébergement Web