Sql-Server-2012
錯誤:將浮點數轉換為數字數據類型的算術溢出錯誤
不幸的是,我有一些不良數據,需要解決它。我在電子表格中有一個包裹列,其中包含一些無意中轉換為浮點數的包裹。我發布了一個問題來解決這個問題處理混合 varchar 和 float 數據類型的 sql 列 但是,現在當我嘗試以下程式碼時出現錯誤:
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'
我得到的錯誤是:
Msg 8115, Level 16, State 6, Line 41 Arithmetic overflow error converting float to data type numeric.
該錯誤似乎表明
DECIMAL
未使用正確的精度和比例定義數據類型。預設值為DECIMAL(18,0)
,但您的預設值可能發生了什麼事?當我像您一樣執行下面的查詢時(只是更改為表變數並添加了精度和比例),我沒有收到任何錯誤。DECLARE @test TABLE ([Parcel Number 2(max)] FLOAT) INSERT INTO @test ( [Parcel Number 2(max)] ) VALUES ( '1.4515020001e+012' -- Parcel Number 2(max) - float ) SELECT CAST(CAST(CAST([Parcel Number 2(max)] AS FLOAT) AS DECIMAL(18,0)) AS NVARCHAR(255)) FROM @test WHERE [Parcel Number 2(max)] = '1.4515020001e+012'
作為一個僅供參考,如果我嘗試
DECIMAL(12,0)
.