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 30/11/2011, 16h52   #1
Candidat au titre de Membre du Club
 
Inscription : mai 2003
Messages : 53
Détails du profil
Informations forums :
Inscription : mai 2003
Messages : 53
Points : 13
Points : 13
Envoyer un message via MSN à bruno782
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!!
bruno782 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/12/2011, 10h33   #2
Membre actif
 
Homme Cyrille
Administrateur de base de données
Inscription : avril 2005
Messages : 112
Détails du profil
Informations personnelles :
Nom : Homme Cyrille
Âge : 32
Localisation : France, Meurthe et Moselle (Lorraine)

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

Informations forums :
Inscription : avril 2005
Messages : 112
Points : 191
Points : 191
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!
IndianaAngus est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/12/2011, 11h16   #3
Candidat au titre de Membre du Club
 
Inscription : mai 2003
Messages : 53
Détails du profil
Informations forums :
Inscription : mai 2003
Messages : 53
Points : 13
Points : 13
Envoyer un message via MSN à bruno782
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 :
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.
bruno782 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/12/2011, 11h55   #4
Membre Expert
 
Avatar de pacmann
 
Homme Pacman Pacman
Business analyst
Inscription : juin 2004
Messages : 1 417
Détails du profil
Informations personnelles :
Nom : Homme Pacman Pacman
Âge : 31
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Business analyst
Secteur : Finance

Informations forums :
Inscription : juin 2004
Messages : 1 417
Points : 2 309
Points : 2 309
Salut !

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

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

(c'est ma photo)
Paku, Paku !
Pour les jeunes incultes : non, je ne suis pas un pokémon...

Le pacblog : http://pacmann.over-blog.com/
pacmann est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/12/2011, 14h10   #5
Expert Confirmé Sénior


 
Avatar de laurentschneider
 
Homme Laurent Schneider
Administrateur de base de données
Inscription : décembre 2005
Messages : 2 927
Détails du profil
Informations personnelles :
Nom : Homme Laurent Schneider
Localisation : Suisse

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

Informations forums :
Inscription : décembre 2005
Messages : 2 927
Points : 4 549
Points : 4 549
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!
__________________
Mon blog : laurentschneider.com
Mon livre : Advanced Oracle SQL Programming
laurentschneider est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 01/12/2011, 14h13   #6
Expert Confirmé Sénior


 
Avatar de laurentschneider
 
Homme Laurent Schneider
Administrateur de base de données
Inscription : décembre 2005
Messages : 2 927
Détails du profil
Informations personnelles :
Nom : Homme Laurent Schneider
Localisation : Suisse

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

Informations forums :
Inscription : décembre 2005
Messages : 2 927
Points : 4 549
Points : 4 549
et la valeur positive de 0105000000010500000000000, c'est combien? 636412671135685017600 ?
__________________
Mon blog : laurentschneider.com
Mon livre : Advanced Oracle SQL Programming
laurentschneider est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 00h51.


 
 
 
 
Partenaires

Hébergement Web