Précédent   Forum des professionnels en informatique > Bases de données > Oracle
Oracle Forum Oracle : le serveur, les outils, ... Voir F.A.Q Oracle Tutoriels 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/02/2007, 15h46   #1
Nouveau Membre du Club
 
Inscription : mars 2006
Messages : 152
Détails du profil
Informations forums :
Inscription : mars 2006
Messages : 152
Points : 28
Points : 28
Envoyer un message via ICQ à 18Marie Envoyer un message via AIM à 18Marie Envoyer un message via MSN à 18Marie
Par défaut insérer champ numérique sans décimales

Salut,

j'ai un nombre qui a le format suivant xx,yu
et je voudrais l'enregistrer dans la base avec ce format xxxyu et aussi enregistrer un champ complémentaire indique le nombre de décimales à prendre en compte.
Estc-e que c'est possible de le faire?

Merci d'avance,
18Marie est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/02/2007, 15h51   #2
Rédacteur/Modérateur
 
Avatar de orafrance
 
Inscription : janvier 2004
Messages : 15 861
Détails du profil
Informations personnelles :
Âge : 35

Informations forums :
Inscription : janvier 2004
Messages : 15 861
Points : 16 212
Points : 16 212
utilise REPLACE

Code :
1
2
3
4
5
SQL> SELECT REPLACE('12,32',',','') FROM dual;
 
REPL
----
1232
Note qu'il suffit de multiplier par 100 sinon
orafrance est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/02/2007, 10h42   #3
Nouveau Membre du Club
 
Inscription : mars 2006
Messages : 152
Détails du profil
Informations forums :
Inscription : mars 2006
Messages : 152
Points : 28
Points : 28
Envoyer un message via ICQ à 18Marie Envoyer un message via AIM à 18Marie Envoyer un message via MSN à 18Marie
Je te remercie pour ta réponse, ca marche.
Par contre je ne peux pas multiplier par 100 car parfois, j'ai le cas de xx,y alors c'est variable,

Je vous demande si on peut compter combien de chiffres on a avant le virgule, s'il y a deja une fonction?

Merci
18Marie est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/02/2007, 11h10   #4
Membre Expert
 
Inscription : avril 2005
Messages : 1 672
Détails du profil
Informations forums :
Inscription : avril 2005
Messages : 1 672
Points : 1 337
Points : 1 337
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
10g SOC10> SELECT length( trunc(12.32) ) FROM dual;
 
LENGTH(TRUNC(12.32))
--------------------
                   2
 
1 ligne sélectionnée.
 
10g SOC10> c /12/1234
  1* SELECT length( trunc(1234.32) ) FROM dual
10g SOC10> r
  1* SELECT length( trunc(1234.32) ) FROM dual
 
LENGTH(TRUNC(1234.32))
----------------------
                     4
 
1 ligne sélectionnée.
ATTENTION : tu remarqueras que j'utilise comme séparateur décimal le point et non la virgule comme dans l'exemple de Fred_D.
Cela dépend du paramétrage !
__________________
Modérateur des forums Oracle et Langage SQL
Forum SQL : je n'interviens PAS plus de 4 fois dans une discussion car si c'est nécessaire cela prouve généralement que vous n'avez pas respecté : les règles du forum
Magnus est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/02/2007, 15h38   #5
Nouveau Membre du Club
 
Inscription : mars 2006
Messages : 152
Détails du profil
Informations forums :
Inscription : mars 2006
Messages : 152
Points : 28
Points : 28
Envoyer un message via ICQ à 18Marie Envoyer un message via AIM à 18Marie Envoyer un message via MSN à 18Marie
Merci pour vos aides mais je l'ai testé avec 0.56 et qd je fais replace il me donne 56 et moi je veux 056 avec le nombre 1 (indique le nombre avant le virgule) car dans ce cas la on sait qu'on a un 0 avant le virgule et si j'ai 56 dans ce cas la on comprend que j'ai 5 avant la virgule et cela n'est pas correcte.

Merci
18Marie est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/02/2007, 15h47   #6
Membre Expert
 
Inscription : avril 2005
Messages : 1 672
Détails du profil
Informations forums :
Inscription : avril 2005
Messages : 1 672
Points : 1 337
Points : 1 337
Pourquoi n'utilisez-vous pas ma méthode sur la chaîne en question avant d'appliquer la fonction REPLACE ?
__________________
Modérateur des forums Oracle et Langage SQL
Forum SQL : je n'interviens PAS plus de 4 fois dans une discussion car si c'est nécessaire cela prouve généralement que vous n'avez pas respecté : les règles du forum
Magnus est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/02/2007, 15h49   #7
Nouveau Membre du Club
 
Inscription : mars 2006
Messages : 152
Détails du profil
Informations forums :
Inscription : mars 2006
Messages : 152
Points : 28
Points : 28
Envoyer un message via ICQ à 18Marie Envoyer un message via AIM à 18Marie Envoyer un message via MSN à 18Marie
Merci pour vos aides mais je l'ai testé avec 0.56 et qd je fais replace il me donne 56 et moi je veux 056 avec le nombre 1 (indique le nombre avant le virgule) car dans ce cas la on sait qu'on a un 0 avant le virgule et si j'ai 56 dans ce cas la on comprend que j'ai 5 avant la virgule et cela n'est pas correcte.

Merci
18Marie est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/02/2007, 09h25   #8
McM
Expert Confirmé Sénior
 
Inscription : juillet 2003
Messages : 3 450
Détails du profil
Informations forums :
Inscription : juillet 2003
Messages : 3 450
Points : 4 209
Points : 4 209
Indique plutôt le nb de décimales.
Code :
1
2
3
WITH C AS (SELECT 0.56 AS A FROM dual)
SELECT a, REPLACE(a, '.'), LENGTH(a) - INSTR(a, '.') 
FROM c
Donne
0.56 56 2

avec 122.35
12.356 12356 3
McM est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/02/2007, 17h49   #9
Nouveau Membre du Club
 
Inscription : mars 2006
Messages : 152
Détails du profil
Informations forums :
Inscription : mars 2006
Messages : 152
Points : 28
Points : 28
Envoyer un message via ICQ à 18Marie Envoyer un message via AIM à 18Marie Envoyer un message via MSN à 18Marie
Merci mais si tu as 12 alors il te donne 2 au lieu de 0 ... ou meme 12.00
18Marie est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/02/2007, 09h23   #10
McM
Expert Confirmé Sénior
 
Inscription : juillet 2003
Messages : 3 450
Détails du profil
Informations forums :
Inscription : juillet 2003
Messages : 3 450
Points : 4 209
Points : 4 209
Pardon, voici la version corrigée.
Code :
1
2
3
WITH C AS (SELECT 12.00 AS A FROM dual)
SELECT a, REPLACE(a, '.'), LENGTH(a) - DECODE(INSTR(a, '.'),0,LENGTH(a), INSTR(a, '.'))
FROM c
McM 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 13h07.


 
 
 
 
Partenaires

Hébergement Web