SELECT ROUND(0.66, 0)
Arithmetic overflow exception
SELECT 1.0 * ROUND(0.66, 0) = 1;
Est-ce normal cela???
SqlServer 2005
Version imprimable
SELECT ROUND(0.66, 0)
Arithmetic overflow exception
SELECT 1.0 * ROUND(0.66, 0) = 1;
Est-ce normal cela???
SqlServer 2005
C'est vrai que c'est amusant.
Car si on fait
Ca marche, de même que :Code:
1
2 PRINT ROUND(0.66, 0)
Code:
1
2 SELECT CAST(ROUND(0.66, 0) as decimal)
Normal ! Lorsque vous ne précisez pas le type de données comme c'est le cas de 0.66, SQL Server le transtype dans le type le plus juste et dans votre cas, c'est un NUMERIC(2,2).
le code que vous donnez revient donc à faire :
Ce qui immanquablement provoque une erreur de dépassement car arrondir 0.66 sans décimale revient à 1 et 1 hne peut pas tenir dans un NUMERIC(2,2), mais dans un NUMERIC(3,2) !!!Code:SELECT ROUND(CAST(0.66 AS NUMERIC(2,2)), 0)
Les jeunes développeurs oublient toujours que SQL est un langage typé !Code:SELECT ROUND(CAST(0.66 AS NUMERIC(3,2)), 0)
Donc, mettre le bon type de données !!!
A +