valor tipo texto numérico numero fecha error desbordamiento datos convertir convert conversión aritmético sql stored-procedures

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.