Je reçois une erreur:
Erreur de débordement arithmétique Conversion numérique en Type de données numérique sur le code ci-dessous. p> blockQuote>
xxx pré> Comment obtenir la conduite de cette erreur? p> p>
4 Réponses :
Vous devez augmenter la valeur de précision supérieure. Essayez de changer comme ceci:
declare @A as nvarchar(100) --will be Nvarchar only
declare @T as nvarchar(100) --will be Nvarchar only
declare @Act as nvarchar(100) --will be Nvarchar only
set @A ='750000'
set @T ='552000'
SELECT @Act = cast(cast(cast(@A AS decimal(18, 2)) -cast( @T AS decimal(18, 4))
/cast(@T AS decimal(18, 4)) AS decimal(18, 4)) * 100 AS numeric(18, 4))
print @Act
Il donne une erreur parce que
La longueur totale du nombre que vous avez fournie est supérieure à dix. p> blockQuote>
Vous pouvez modifier votre code comme indiqué ci-dessous indiqué ci-dessous
10, 4 code> à18, 4 code>. p>xxx pré> < p> Sa valeur est plus que la limite maximale de sorte qu'il donne une exception. p> p>
Tout d'abord, pourquoi utilisez-vous le mauvais type de données et faites-vous du mal pour vous, vous devez toujours utiliser le type de données approprié.
donc au lieu de pas besoin de lancer < code> comme numérique (10, 4) code> et vous devez lancer vers Votre requête sera facile si vous modifiez les types de données, par exemple: p> ou si vous souhaitez lancer le résultat sous forme varchar code> Pourquoi n'utilise pas Décimal code>, toujours ici est la requête depuis votre question est comment obtenir la conduite de cette erreur em> p> varchar code> car vous vous attribuez la valeur à une variable variable de Varcharne, non numérique. P> numérique (10, 4) code> p>
Si je comprends votre logique correctement, ce que vous voulez faire avec: est ce calcul simple: p> alors, Dans votre cas, vous devez lancer Je ne suis pas sûr, mais je pense que vous voulez probablement calculer: p> même alors, en règle générale, considérez toujours le gamme de vos calculs mathématiques et utilisez le type de données numérique approprié pour vos variables. P> P> @act code> comme numérique (12, 4) code>, parce que vous avez plusieurs par 100. Votre résultat sera le suivant: 74999900.0000 code >. P>
As-tu une question?
Sûrement la première chose à suivre consiste à utiliser les mauvais types de données partout. Si vous voulez faire des mathématiques, pourquoi vos points de départ et de fin
nvarchar code>?@DAMIEN_THE_UNBELIEVER, il pourrait y avoir du caractère dans @A & @T, sur la base des cas fera les mathématiques, donc le type de données sélectionné comme Nvarchar.
@Kam je pose déjà une réponse à votre question, mais n'est toujours pas clair ce que vous essayez de faire vraiment, si l'une des réponses affichées résolvez votre problème, alors considérez-le à la mise en place et à l'accepter, sinon modifiez votre question. Pour nous dire exactement qu'essayez-vous de faire.
@Sami, merci sami !! Il a été effacé dans le 1er commentaire. J'essayais de donner la clarification sur le type de données uniquement.
@Kam que vous envisagez d'accepter une réponse à votre question.