Multiplier par 100 puis convertir en entier.
Étant donné la contrainte de n'utiliser que T-Sql dans Sql Server 2005, existe-t-il un meilleur moyen de supprimer le point décimal d'un type de données money qu'une conversion en varchar (ici implicitement) puis un remplacement du point décimal ?
Voici ce que j'ai actuellement.
SELECT REPLACE(1.23, '.', ''), REPLACE(19.99, '.', '')
Ce qui renvoie les 123 et 1999 souhaités, mais je me demandais s'il y avait un meilleur moyen. Des idées ?
Pourriez-vous être un peu plus précis sur le cas d'utilisation ? Supprimer le point décimal de la représentation est un peu inhabituel étant donné que vous perdrez toutes les informations sur l'échelle. Supposez-vous qu'il y aura toujours deux chiffres? Si c'est le cas, vous pouvez simplifier multiplier par 100 puis arrondir avant de convertir en chaîne.
Gardez à l'esprit que le type de données monétaire peut comporter jusqu'à 4 chiffres après la virgule. Les valeurs à plus de deux chiffres peuvent ne pas fonctionner comme prévu pour votre solution d'origine ou l'astuce x100.
Vous ne devriez jamais utiliser le type de données money pour stocker des valeurs monétaires. Si vous faites des calculs, vous obtiendrez des résultats tronqués. Exécutez ce qui suit pour voir ce que je veux dire
DECLARE
@mon1 MONEY,
@mon2 MONEY,
@mon3 MONEY,
@mon4 MONEY,
@num1 DECIMAL(19,4),
@num2 DECIMAL(19,4),
@num3 DECIMAL(19,4),
@num4 DECIMAL(19,4)
SELECT
@mon1 = 100, @mon2 = 339, @mon3 = 10000,
@num1 = 100, @num2 = 339, @num3 = 10000
SET @mon4 = @mon1/@mon2*@mon3
SET @num4 = @num1/@num2*@num3
SELECT @mon4 AS moneyresult,
@num4 AS numericresult
Sortie : 2949.0000 2949.8525