簡體   English   中英

錯誤:將數字轉換為數據類型varchar的算術溢出錯誤

[英]Error : Arithmetic overflow error converting numeric to data type varchar

錯誤:將數字轉換為數據類型varchar的算術溢出錯誤。

在這一行得到錯誤為什么以及應該改變什么?

CONVERT(VARCHAR(8),CONVERT(DECIMAL(8,4),((CurrentLoans.Price - PreviousLoans.Price) / PreviousLoans.Price) * 100)) 

這里至少有一個問題:

CONVERT(VARCHAR(8),CONVERT(DECIMAL(8,4))

Decimal(8,4)表示8位數字,小數點右邊4位。 這種考慮實際的十進制字符,所以你可能有這樣一個值:

1234.5678

這是一個有效的Decimal(8,4)但不適合varchar(8)

我知道這是一個老帖子,但我只想說謝謝。 我遇到了這個確切的問題,最令人討厭的是它從VIEW中選擇時出錯,但是當我使用VIEW中的select語句粘貼並將其插入TEMP TABLE時沒有給出錯誤!

例:

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!

最后,我不得不改變視圖中的一部分

select cast(productNumber as nvarchar(1), etc...

select cast(productNumber as nvarchar(2), etc...

它起作用了。

但奇怪的是,我得到的錯誤是

Arithmetic overflow error converting numeric to data type varchar.

而不是讀取的那個

Data would be truncated

管他呢...

值得深思。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM