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 :
Jusque là, tout va bien, sauf que j'alimente un fichier de sortie, donc je dois CASTer la donner en char :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 SELECT nombre / POWER(10, nb_decimales) FROM matable
Seulement, le problème est qu'il ne m'affiche plus les décimales à partir de la cinquième... (ex : 1 / 10000000 ==> 0.0000 au lieu de 0.00000001)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 SELECT CAST(nombre / POWER(10, nb_decimales) AS CHAR) FROM matable
Du coup, je me dis que je dois une nouvelle fois CASTer pour convertir le tout en DECIMAL avec une précision convenable :
Un nouveau problème frappe alors: la sortie affiche les zéro non significatifs. Du coup, je me dis que je pourrais modifier la précision en mettant nb_decimales en tant que deuxième argument (DECIMAL(24,nb_decimales)), mais ça ne passe pas : erreur au lancement de la requête puisqu'une constante est attendue...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 SELECT CAST(CAST(nombre / POWER(10, nb_decimales) AS DECIMAL(24,9)) AS CHAR) FROM matable
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.
Bref, je suis en panne d'inspiration. Connaissez-vous une méthode où l'on puisse récupérer à coup sur un nombre au format alphanumérique issue d'une division, et qui ne soit pas affiché comme format scientifique ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part 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.
Partager