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 INTegers, 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 MONEYlorsque vous traitez MONEYet de l'utiliser selon les règles mathématiques qu'il suit (comme INTeger).
Aurait-il été préférable que SQL Server promeuve la division et la multiplication des MONEYs en DECIMALs (ou FLOATs?) - peut-être, mais ils n'ont pas choisi de le faire; ils n'ont pas non plus choisi de promouvoir les INTegers en FLOATs lors de leur division.
MONEYn'a pas de problème de précision; cela permet DECIMALd'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ù xpourrait être l'un DECIMALou l' autre MONEY, alors vous MONEYaurez un avantage.
N'oubliez pas non plus qu'il s'agit d'un cousin plus petit - SMALLMONEYjuste 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, DECIMALle 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 DECIMALarrondi plutôt que MONEYtronqué, 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.