Types DÉCIMAUX dans Teradata
Quelqu'un peut-il expliquer le résultat suivant je reçois dans Teradata:
SELECT TYPE(CAST (2.3 AS DECIMAL(18,4)) * CAST (2.3 AS DECIMAL(18,4)) )
Le résultat est:
DECIMAL(18,8)
Je m'attendais à VIRGULE(18,4)
Vous devez vous connecter pour publier un commentaire.
Chaque SGBD a ses propres règles concernant les calculs impliquant des nombres décimaux.
Teradata les règles de base sont:
Lorsque vous ajouter/soustraire/diviser Décimales résultant de la précision de fraction est la plus grande des deux opérandes, par exemple, dec(10,2) + dec(10,4) = dec(xx,4)
Mais quand vous multipliez les chiffres fractionnaires sont ajoutés, e.g.dec(10,2) * dec(10,4) = dec(xx,6)
L'ensemble de la précision a un peu plus de règles (certaines en fonction de la dbscontrol MAxDecimal réglage).
Et puis il y a la règle la plus importante, les gens ont tendance à oublier:
Après chaque calcul, le résultat est arrondi à cette précision.
Dieter