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 :

Conversion char number


Sujet :

SQL Oracle

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 55
    Points : 38
    Points
    38
    Par défaut Conversion char number
    Bonjour,

    dans un champ en char(60) se trouve des valeurs numériques. Lorsqu'une valeur négative s'y trouve, TOAD renvoie à l'affichage des champs que je n'arrive pas à interpréter.

    Ex :

    avec des valeurs positives : 0105000000010500000000000
    avec des valeurs négatives :  00000  0000000000 (un -2 en l'occurence)

    Je n'ai pas la main sur les valeurs qui sont stockées dans la base par une application. Je n'ai pas non plus la main sur la base pour laquelle je ne peux pas changer le format. Dans l'application les valeurs sont correctement interprétées, le -2 s'affiche.

    Je suis OBLIGE de trouver un moyen de récupérer ces caractères. Auriez-vous une idée?? Merci!!

  2. #2
    Membre confirmé
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Avril 2005
    Messages
    197
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Avril 2005
    Messages : 197
    Points : 594
    Points
    594
    Par défaut
    Ce serais bien de donner plus d'info. A quoi ressemble tes données dans ta tables? Qu'est ce que tu fait comme requête pour avoir ces résultats?
    Désolé mais j'ai rien compris à ce que tu essaie de faire!

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 55
    Points : 38
    Points
    38
    Par défaut
    Citation Envoyé par IndianaAngus Voir le message
    Ce serais bien de donner plus d'info. A quoi ressemble tes données dans ta tables? Qu'est ce que tu fait comme requête pour avoir ces résultats?
    Désolé mais j'ai rien compris à ce que tu essaie de faire!
    Pour les données j'ai mis deux exemples de ce que l'on trouve dans la table :

    avec des valeurs positives : 0105000000010500000000000
    avec des valeurs négatives :  00000  0000000000 (un -2 en l'occurence)

    cela représente ce qu'il y a dans le champ en char(60).

    Les valeurs vont être récupérées par une requête de ce type :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    select 
              TO_NUMBER (REPLACE (SUBSTR (PERXGD.C09, 1, 5), ' ', '0'), '00009')
              / 100,
              TO_NUMBER (REPLACE (SUBSTR (PERXGD.C09, 6, 5), ' ', '0'), '00009')
              / 100,
              TO_NUMBER (REPLACE (SUBSTR (PERXGD.C09, 11, 5), ' ', '0'), '00009')
              / 100,
              TO_NUMBER (REPLACE (SUBSTR (PERXGD.C09, 16, 5), ' ', '0'), '00009')
              / 100,
              TO_NUMBER (REPLACE (SUBSTR (PERXGD.C09, 21, 5), ' ', '0'), '00009')
              / 100
    from table
    Le problème est que l'application code, je ne sais pas comment ni pourquoi, les valeurs négatives en base par ce symbole : "". Donc lorsque j'exécute le select forcément il plante en faisant le to_number vu qu'il ne reconnait pas la valeur. Impossible de récupérer mes valeurs -1, -2, -1.5 etc... Mais, à l'affichage dans mon application les valeurs retournées sont correctement affichées. L'appli sait donc comment interpréter ces signes, mais mois pas en sql.

  4. #4
    Membre émérite Avatar de pacmann
    Homme Profil pro
    Consulté Oracle
    Inscrit en
    Juin 2004
    Messages
    1 626
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Consulté Oracle
    Secteur : Distribution

    Informations forums :
    Inscription : Juin 2004
    Messages : 1 626
    Points : 2 845
    Points
    2 845
    Par défaut
    Salut !

    Et en ajoutant dans ta requête un REPLACE de ce caractère par '-' ?

    En faisant copier coller, j'obtiens chr(7).

  5. #5
    Expert confirmé
    Avatar de laurentschneider
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Décembre 2005
    Messages
    2 944
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2005
    Messages : 2 944
    Points : 4 926
    Points
    4 926
    Par défaut
    avec un format binaire, il est assez trivial d'exprimer les nombres positifs

    1=1
    10=2
    11=3

    etc

    pour exprimer des nombres négatifs, il faut savoir quel système tu employes.

    tu peux dire que le premier chiffre est 0 pour les nombres positifs et que si le premier chiffre est 1, alors ton nombre sera négatif

    par exemple sur 3 bits


    000=0
    001=1
    010=2
    011=3
    100=-4
    101=-3
    110=-2
    111=-1

    si ensuite tu traduis ça un octal, en héxa, en b64 ou en charactères (base256), alors tu aurais besoins de plus qu'un exemple pour nous dire que

    00000 0000000000 = -2

    bon, il y a sans doute des génies qui trouveront tout de suite!

  6. #6
    Expert confirmé
    Avatar de laurentschneider
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Décembre 2005
    Messages
    2 944
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2005
    Messages : 2 944
    Points : 4 926
    Points
    4 926
    Par défaut
    et la valeur positive de 0105000000010500000000000, c'est combien? 636412671135685017600 ?

Discussions similaires

  1. Conversion char vers number (to_number)
    Par manas dans le forum SQL
    Réponses: 5
    Dernier message: 24/02/2011, 16h39
  2. conversion char wide char
    Par ep31 dans le forum MFC
    Réponses: 4
    Dernier message: 15/11/2005, 09h14
  3. Pb Invalid Conversion "char" to "char*"
    Par kazarn dans le forum C++
    Réponses: 3
    Dernier message: 02/03/2005, 14h24
  4. Conversion char * vers wchar_t
    Par Zapan dans le forum C++
    Réponses: 4
    Dernier message: 24/02/2005, 16h56
  5. Réponses: 3
    Dernier message: 27/05/2004, 00h03

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