0
votes

SQL: Cast comme décimal n'accepte pas les paramètres de précision

J'utilise de lancer comme décimal et spécifiez la précision que j'ai besoin. Voici l'extrait de ma requête SQL:

couler (((num / volume) * 100) comme décimal (16,8)) comme impact

Peu importe ce que j'ai mis dans le paramètre pour décimal, la valeur de la colonne Impact est toujours "0.00".

Cela ne devrait pas être le cas car j'ai un numéro = 5, un volume = 81000, cela devrait donc me donner "0,0061" dans l'impact.

S'il vous plaît quelqu'un peut-il expliquer pourquoi jeterais comme décimal n'accepte pas mes paramètres de donner la précision dont j'exige dans la colonne Impact?

sql

3 commentaires

Quel DBMS Produit utilisez-vous? "SQL" est juste une langue de requête, pas le nom d'un produit de base de données spécifique. Veuillez ajouter un tag pour le produit de base de données que vous utilisez. Pourquoi devrais-je marquer mon DBMS


Quels types de données sont num et volume ?


Essayez (num * 100.0) / volume . ( Division entière ...)


3 Réponses :


2
votes

Parce que le résultat INT / INT coulait comme int et c'est pourquoi 5/81000 égaux 0

Vous pouvez utiliser P>

(CAST(num AS decimal(16,8)) / CAST(volume AS decimal(16,8))) * 100 AS impact


0 commentaires

0
votes

Il est probable parce que vos deux paramètres pour NUM et volume sont des entiers. En cas d'une de ces dises comme une décimale et que vous devriez obtenir la réponse que vous voulez. par exemple xxx


0 commentaires

0
votes

Votre base de données fait clairement une division entière. Je voudrais simplement réécrire ceci comme suit: xxx


0 commentaires