|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||||||
|
Invité régulier
![]() Inscription : décembre 2006 Messages : 40 ![]() |
Bonjour,
J'ai actuellement un problème. Je travail sur des nombres stockés dans une base, en deux parties : la partie alphanumérique du nombre d'un côté, et le nombre de décimales de l'autre. Instinctivement, j'ai opté pour cette formule : Code :
Code :
Du coup, je me dis que je dois une nouvelle fois CASTer pour convertir le tout en DECIMAL avec une précision convenable : Code :
J'ai essayé une autre feinte en utilisant la fonction ROUND, mais dès que je remplace le nombre de décimale par nb_decimales, il m'affiche un nombre scientifique. Code :
SELECT CAST(ROUND(nombre / POWER(10, nb_decimales), nb_decimales) AS CHAR) (ex : je veux 0.000001 à l'issue de la division 1 / 10^6 et non pas 1e-06) Merci. |
||||||
|
|
00
|
|
|
#2 |
|
Invité régulier
![]() Inscription : décembre 2006 Messages : 40 ![]() |
Pour info, j'ai trouvé ceci, qui ne marche pas trop mal. Je trouve ça triste d'en arriver jusque là
Code :
SELECT TRIM(TRAILING '.' FROM TRIM(TRAILING 0 FROM ROUND(nombre / POWER(10, nb_decimales), nb_max_decimales))) |
|
|
00
|
|
|
#3 |
![]() ![]() |
J'ai du mal à comprendre ton problème.
Si je fais cette requête : Code :
SELECT CAST( 1 / POWER( 10, 6 ) AS DECIMAL( 12, 6 ) )
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique. Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework... « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau) À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française ! Linuxiens, comptez-vous ! |
|
00
|
|
|
#4 |
|
Invité régulier
![]() Inscription : décembre 2006 Messages : 40 ![]() |
En gros, le soucis est que je n'arrive pas à afficher les nombres sous leur forme complète plutôt que sous leur forme scientifique.
Le format en sortie t'affichera les 0 inutiles si tu utilises cette fonction : Code :
SELECT CAST( 1 / POWER( 10, 4 ) AS DECIMAL( 12, 6 ) ) Du coup, j'avais dans l'idée de mettre la donnée nb_decimales à la fois dans la fonction POWER et dans le nombre de décimales du CAST, mais ça ne fonctionne pas. |
|
|
00
|
|
|
#5 | |||||
![]() ![]() |
Citation:
Le chiffre 1 en DECIMAL (12, 6) s'écrira 1,000000. Citation:
Citation:
Citation:
Une fois de plus : Citation:
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique. Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework... « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau) À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française ! Linuxiens, comptez-vous ! |
|||||
|
00
|
|
|
#6 |
|
Invité régulier
![]() Inscription : décembre 2006 Messages : 40 ![]() |
La fonction CAST(... AS DECIMAL(x,y)) doit contenir deux valeurs constantes si ont veut que ça marche.
L'importance pour moi de récupérer un nombre bien formaté, est qu'il est exporté tel-quel dans un fichier csv. Pour en revenir à la fonction proposée : Code :
SELECT CAST(1 / POWER(10, 6) AS DECIMAL(12, 6 )) Code :
SELECT CAST(Matable.monNombre / POWER(10, maTable.nombreDecimales) AS DECIMAL(12, maTable.nombreDecimales)) |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com