2016-12-01 100 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我试图成为一个可敬的人。有点惭愧,我不认为增加链接。 –

相关问题