2016-12-01 69 views
-3

我想這UPDATE表SET列= CONVERT(INT,COL)

UPDATE table 
SET col = CONVERT(int, col) 

和我得到

消息245,級別16,狀態1,2號線 轉換失敗時將varchar值'106/1'轉換爲數據類型int。

+1

我不知道什麼讓我感到困惑ssage。你的表中有一個值爲'106/1'的值,它不是'int'...它在錯誤信息中的字面意思。檢查你的數據... – Siyual

+1

只是好奇。你期待[106除以1]還是[106]或[NULL]? –

+1

我在這一天給你了這個答案http://stackoverflow.com/questions/40870435/i-have-column-with-decimals-and-i-want-it-to-make-it-real-number -please-see-belo用我給你的案例陳述替換'col',它會起作用。 –

回答

0

檢查你傳遞給方法的參數類型,你的方法要求一個類型爲Int的參數,但是你把它作爲一個varchar,這就是爲什麼它的拋出異常。 嘗試用給一個int一次

+0

歡迎來到SO。它有助於發佈一些代碼來顯示你的答案。 –

3

如果2012+,你可以使用TRY_CONVERT()...無效將返回NULL

UPDATE table SET col = TRY_CONVERT(int, col) 

如果不是2012+

UPDATE table SET col = case when isnumeric(col+'.01')=0 then null else CONVERT(int,col) end 

編輯(據悉,昨晚通過Shnugo獲得了isnumeric()技巧)

+0

Thx爲學分:-) [昨晚自己學習了isnumeric()技巧我自己: - )](http://stackoverflow.com/q/40898509/5089204) – Shnugo

+0

@Shnugo我試圖成爲一個可敬的人。有點慚愧,我不認爲增加鏈接。 –