2014-10-30 67 views
1

列中一個較大的值已引起我的SQL拋出錯誤信息: 錯誤轉換數據類型爲varchar到數字的SQL Server將varchar列值「1218300.00」爲INT

我已經分離出這一個特定的行。下面是一個簡單的腳本,「作品」:

SELECT 
    MtgeLoanAmount 
    , CAST(convert(numeric(15,2),'1218300.00') as int) as TrialValue 
FROM dbo.Processed_VA_From_Excel 
    where FipsStateCode='06' 
    and FipsCountyCode='013' 
    and GuarantyAmount = '304575' 

爲粘貼在這裏返回的結果: enter image description here

所以,當我試圖通過添加第三列「概括」我的測試如下它不能轉換:

SELECT 
MtgeLoanAmount 
, CAST(convert(numeric(15,2),'1218300.00') as int) as TrialValue 
, CAST(convert(numeric(15,2),MtgeLoanAmount) as int) 
FROM dbo.Processed_VA_From_Excel 
where 
    FipsStateCode='06' 
and FipsCountyCode='013' 
and GuarantyAmount = '304575' 

返回此:

Msg 8114, Level 16, State 5, Line 1 
Error converting data type varchar to numeric. 
+1

什麼是'MtgeLoanAmount'聲明爲? – DeanOC 2014-10-30 22:29:45

+0

謝謝,DeanOC。 MtgeLoanAmount被聲明爲varchar(255),大部分值不大於1218300.00(大多數都小於1百萬) – 2014-10-30 23:35:32

+0

15,2表示總共15個,其中2個是小數點,因此存在較大值,得到最大值並檢查也可能需要bigint來代替int – radar 2014-10-30 23:51:07

回答

1

這可能適合你:

SELECT 
    MtgeLoanAmount, 
    CONVERT(INT, ROUND(MtgeLoanAmount, 0)) AS MtgeLoanAmountNoCents 
FROM 
    dbo.Processed_VA_From_Excel 
WHERE 
    FipsStateCode = '06' AND 
    FipsCountyCode = '013' AND 
    GuarantyAmount = '304575' 
+0

謝謝JohnS。不知怎的,我猜這是數字的大小。上面的代碼建議運行良好。 – 2014-10-31 02:19:34

+0

不是大小,ROUND()函數使它工作! – JohnS 2014-10-31 02:52:45

相關問題