sql - texto - error de desbordamiento aritmético al convertir identity al tipo de datos tinyint
Error: error de desbordamiento aritmético al convertir numérico al tipo de datos varchar (2)
Error: error de desbordamiento aritmético al convertir numérico al tipo de datos varchar.
Obteniendo el error en esta línea, ¿por qué y qué se debe corregir?
CONVERT(VARCHAR(8),CONVERT(DECIMAL(8,4),((CurrentLoans.Price - PreviousLoans.Price) / PreviousLoans.Price) * 100))
Aquí hay al menos un problema:
CONVERT(VARCHAR(8),CONVERT(DECIMAL(8,4))
El Decimal(8,4)
indica 8 dígitos numéricos, 4 a la derecha del decimal. Esto NO tiene en cuenta el carácter decimal real, por lo que potencialmente tiene un valor como:
1234.5678
que es un Decimal(8,4)
válido Decimal(8,4)
pero no cabe en un varchar(8)
.
Sé que esta es una publicación anterior, pero solo quería decir gracias. Estaba teniendo este problema exacto y lo más molesto fue que me dio el error al seleccionar desde una VISTA, pero no proporcioné el error cuando utilicé la instrucción de selección de la VISTA, la pegué y la inserté en una MESA TEMPORAL.
ejemplo:
select * from dvView --worked
select * from dvView where product = ''5'' --Broke!
--BUT
select * from #Temp_table_dvView --worked!
select * from #Temp_table_dvView where product = ''5'' --worked!
al final, tuve que cambiar una parte en la vista desde
select cast(productNumber as nvarchar(1), etc...
a
select cast(productNumber as nvarchar(2), etc...
Y funcionó.
pero extraño que el error que obtuve fue
Arithmetic overflow error converting numeric to data type varchar.
en lugar de la que dice
Data would be truncated
o lo que sea...
Comida para el pensamiento.