Comment convertir la valeur des enregistrements dans une table du type de données varchar
en integer
ou decimal
afin que je puisse obtenir la somme de la valeur. J'utilise SQL Server 2005
.
Dites que j'ai une structure de table comme celle-ci:
ID int
Stuff varchar
et les records
ID = 1, Stuff = 32.43
ID = 2, Stuff = 43.33
ID = 3, Stuff = 23.22
Maintenant, je veux obtenir le total de la colonne Stuff:
SELECT SUM(convert(decimal(4,2), Stuff)) as result FROM table
Mais ça ne marche pas. S'il vous plaît besoin d'aide!
Structure de la table ... très basique:
create table tabla(ID int, Stuff varchar (50));
insert into tabla values(1, '32.43');
insert into tabla values(2, '43.33');
insert into tabla values(3, '23.22');
Question:
SELECT SUM(cast(Stuff as decimal(4,2))) as result FROM tabla
Ou essayez ceci:
SELECT SUM(cast(isnull(Stuff,0) as decimal(12,2))) as result FROM tabla
Travailler sur SQLServer 2008
Vous obtenez un dépassement arithmétique. cela signifie que vous essayez de rendre impossible une conversion. Cette erreur est générée lorsque vous essayez d'effectuer une conversion et que le type de données de destination n'est pas suffisant pour convertir les données Origin. Par exemple:
Si vous essayez de convertir 100,52 en décimal (4,2), vous obtiendrez cette erreur. Le nombre 100.52 nécessite 5 positions et 2 d’entre elles sont décimales.
Essayez de changer la précision décimale à quelque chose comme 16,2 ou plus. Essayez avec quelques enregistrements d'abord, puis utilisez-le pour tous vos choix.
La raison en est peut-être que la somme a dépassé le nombre requis de chiffres - 4. Si vous augmentez la taille de la virgule décimale à decimal(10,2)
, cela devrait fonctionner
SELECT SUM(convert(decimal(10,2), Stuff)) as result FROM table
OR
SELECT SUM(CAST(Stuff AS decimal(6,2))) as result FROM table