Eh bien, j'aime bien MONEY
! C'est un octet moins cher que DECIMAL
, et les calculs sont plus rapides car (sous les couvertures) les opérations d'addition et de soustraction sont essentiellement des opérations entières. L'exemple de @ SQLMenace - qui est un grand avertissement pour les ignorants - pourrait également être appliqué aux INT
egers, où le résultat serait nul. Mais ce n'est pas une raison pour ne pas utiliser d'entiers - le cas échéant .
Il est donc parfaitement «sûr» et approprié de l'utiliser MONEY
lorsque vous traitez MONEY
et de l'utiliser selon les règles mathématiques qu'il suit (comme INT
eger).
Aurait-il été préférable que SQL Server promeuve la division et la multiplication des MONEY
s en DECIMAL
s (ou FLOAT
s?) - peut-être, mais ils n'ont pas choisi de le faire; ils n'ont pas non plus choisi de promouvoir les INT
egers en FLOAT
s lors de leur division.
MONEY
n'a pas de problème de précision; cela permet DECIMAL
d'avoir un type intermédiaire plus grand utilisé pendant les calculs n'est qu'une «fonctionnalité» de l'utilisation de ce type (et je ne suis pas vraiment sûr de l'étendue de cette «fonctionnalité»).
Pour répondre à la question spécifique, une "raison impérieuse"? Eh bien, si vous voulez des performances maximales absolues dans un SUM(x)
où x
pourrait être l'un DECIMAL
ou l' autre MONEY
, alors vous MONEY
aurez un avantage.
N'oubliez pas non plus qu'il s'agit d'un cousin plus petit - SMALLMONEY
juste 4 octets, mais il atteint son maximum 214,748.3647
- ce qui est assez petit pour de l'argent - et n'est donc pas souvent un bon choix.
Pour prouver l'intérêt d'utiliser des types intermédiaires plus grands, si vous affectez explicitement l'intermédiaire à une variable, DECIMAL
le même problème se produit:
declare @a decimal(19,4)
declare @b decimal(19,4)
declare @c decimal(19,4)
declare @d decimal(19,4)
select @a = 100, @b = 339, @c = 10000
set @d = @a/@b
set @d = @d*@c
select @d
Produit 2950.0000
(d'accord, donc au moins DECIMAL
arrondi plutôt que MONEY
tronqué, comme un entier.)
DECIMAL(19, 4)
est un choix populaire vérifier ce aussi vérifier ici du monde Monnaie Formats de décider combien de décimales à l' utilisation, l' espoir aide.