Infelizmente, tenho alguns dados incorretos e preciso trabalhar nisso. Eu tenho uma coluna Parcel em uma planilha com algumas parcelas que foram inadvertidamente convertidas em números de ponto flutuante. Eu postei uma pergunta para resolver este problema Manipulando a coluna sql com tipos de dados varchar e float mistos No entanto, agora estou recebendo um erro quando tento o seguinte código:
SELECT CAST(CAST(CAST([Parcel Number 2(max)] AS FLOAT) AS DECIMAL) AS NVARCHAR(255))
FROM XLSIMPORT WHERE [Parcel Number 2(max)] = '1.4515020001e+012'
O erro que estou recebendo é:
Msg 8115, Level 16, State 6, Line 41
Arithmetic overflow error converting float to data type numeric.
O erro parece indicar que o tipo de
DECIMAL
dados não está definido com a precisão e escala corretas. O padrão éDECIMAL(18,0)
, mas algo pode ter acontecido com seus padrões? Quando executo a consulta abaixo como você (apenas alterei para uma variável de tabela e adicionei a precisão e a escala), não recebo nenhum erro.Como um FYI, eu recebo um estouro aritmético se eu tentar
DECIMAL(12,0)
.