IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

SQL Oracle Discussion :

Problème avec la méthode coalesce


Sujet :

SQL Oracle

  1. #1
    Rédacteur
    Avatar de Louis-Guillaume Morand
    Homme Profil pro
    Cloud Architect
    Inscrit en
    Mars 2003
    Messages
    10 839
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Cloud Architect
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2003
    Messages : 10 839
    Points : 28 252
    Points
    28 252
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    moi c'est Louis-Guillaume, ni Louis, ni Guillaume mais Louis-Guillaume et je n'aide pas ceux qui écorchent mon nom

  2. #2
    Membre éprouvé Avatar de pinocchio
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2002
    Messages
    795
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Yvelines (Île de France)

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

    Informations forums :
    Inscription : Novembre 2002
    Messages : 795
    Points : 960
    Points
    960
    Par défaut
    Bonjour,
    Essaye avec la fonction nvl(champ, valeur qui remplace le null)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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)

  3. #3
    Rédacteur
    Avatar de Louis-Guillaume Morand
    Homme Profil pro
    Cloud Architect
    Inscrit en
    Mars 2003
    Messages
    10 839
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Cloud Architect
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2003
    Messages : 10 839
    Points : 28 252
    Points
    28 252
    Par défaut
    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?
    moi c'est Louis-Guillaume, ni Louis, ni Guillaume mais Louis-Guillaume et je n'aide pas ceux qui écorchent mon nom

  4. #4
    Expert éminent
    Homme Profil pro
    Big Data / Freelance EURL
    Inscrit en
    Mars 2003
    Messages
    2 124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Big Data / Freelance EURL

    Informations forums :
    Inscription : Mars 2003
    Messages : 2 124
    Points : 7 291
    Points
    7 291
    Par défaut
    jamais essayé mais il n'y aurait pas un truc comme cela qu'il faudrait faire ?:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    coalesce(option_type,to_nchar('test'))

  5. #5
    Rédacteur
    Avatar de Louis-Guillaume Morand
    Homme Profil pro
    Cloud Architect
    Inscrit en
    Mars 2003
    Messages
    10 839
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Cloud Architect
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2003
    Messages : 10 839
    Points : 28 252
    Points
    28 252
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  6. #6
    Membre expert

    Profil pro
    Inscrit en
    Février 2006
    Messages
    3 437
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 3 437
    Points : 3 597
    Points
    3 597
    Par défaut
    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.

    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.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Runtime] Problème avec la méthode 'exec'
    Par regisba dans le forum API standards et tierces
    Réponses: 1
    Dernier message: 25/08/2006, 13h36
  2. Problème avec la méthode request.form()
    Par sam.fet dans le forum ASP
    Réponses: 2
    Dernier message: 11/08/2006, 17h11
  3. [POO] Problème avec setInterval/méthodes d'écriture
    Par Lpu8er dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 18/07/2006, 15h37
  4. problème avec la méthode getElementById() dans Firefox
    Par matrouba dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 19/12/2005, 08h55
  5. Problème avec la méthode pack()
    Par tomca dans le forum Langage
    Réponses: 5
    Dernier message: 15/09/2005, 10h58

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo