2008-11-13 7 views

Répondre

3

C'est très bien pour les littéraux comme 1.0, mais si vous tirez les données des colonnes de la table, vous devez lancer/convertir le premier numéro évalué dans votre équation:

convert(decimal, [col1])/([col2] + [col3]) 

-ou-

convert(decimal(15, 2), [col1])/([col2] + [col3]) 
1

J'ai trouvé un collègue comme je l'ai posté.

Vous devez spécifier la précision et l'échelle par défaut.

Cela fonctionne dans ce scénario: décimal @tempDec déclarer (3,2)

De MSDN:

décimal [(p [, s])] et numérique [(p [, s])] Correction des numéros de précision et d'échelle. Lorsque la précision maximale est utilisée, les valeurs valides vont de - 10^38 +1 à 10^38 - 1. Les synonymes SQL-92 pour decimal sont dec et dec (p, s). numeric est fonctionnellement équivalent à decimal.

p (précision) Le nombre total maximal de chiffres décimaux pouvant être stockés, à la fois à gauche et à droite de la virgule décimale. La précision doit être comprise entre 1 et 38. La précision par défaut est 18.

s (échelle) Le nombre maximal de chiffres décimaux pouvant être stockés à droite de la virgule décimale. L'échelle doit être une valeur comprise entre 0 et p. L'échelle peut être spécifiée uniquement si la précision est spécifiée. L'échelle par défaut est 0; par conséquent, 0 < = s < = p. Les tailles de stockage maximales varient en fonction de la précision.

+0

En d'autres termes, l'échelle zéro dans la variable locale supprime les données après le point de stockage – gbn

Questions connexes