更新表 SET col = CONVERT(int, col)
Posted
技术标签:
【中文标题】更新表 SET col = CONVERT(int, col)【英文标题】:UPDATE table SET col = CONVERT(int, col) 【发布时间】:2016-12-01 14:49:15 【问题描述】:我正在尝试这个
UPDATE table
SET col = CONVERT(int, col)
我得到了
消息 245,第 16 级,状态 1,第 2 行 将 varchar 值“106/1”转换为数据类型 int 时转换失败。
【问题讨论】:
我不知道错误消息有什么令人困惑的地方。您的表中有一个值106/1
,它不是 int
... 它在错误消息中字面意思是这样。检查您的数据...
只是好奇。你期待 [106 除以 1] 还是 [106] 或 [NULL] ?
前几天我给了你一个答案***.com/questions/40870435/…用我给你的案例陈述替换'col',它会起作用的。
我反之亦然。由于错误一个值未能做到
@PranayKumar 最简单的方法是运行更新以根据您之前的问题转换数据。完成后,运行更新以将列转换为 int。
【参考方案1】:
如果 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() 技巧)
【讨论】:
感谢感谢 :-) Learned that isnumeric() trick last night myself :-) @Shnugo 我努力做一个有尊严的人。有点惭愧,没想到要加链接。【参考方案2】:检查您传递给方法的参数类型,您的方法要求输入 Int 类型的参数,但您将其作为 varchar 提供,这就是它抛出异常的原因。 尝试给一个 int 一次
【讨论】:
欢迎来到 SO。发布一些代码以显示您的答案会有所帮助。以上是关于更新表 SET col = CONVERT(int, col)的主要内容,如果未能解决你的问题,请参考以下文章