[英]Arithmetic overflow error converting varchar to data type numeric -error
[英]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.