小编K0D*_*0D4的帖子

在表中查找具有无法转换为int的值的行

我需要一种方法来检测MSSQL中的表中的行,其中varchar条目无法转换为int.

我正在使用的系统在一个地方使用可编辑的varchar字段,并将其连接到另一个地方的整数列.如果varchar字段中包含无效数字(空白,带有alpha或符号,或者数字超过21亿(max int size)),则另一个查询失败,表示值xyz溢出int列,或者可能不被转换.

我想出了以下部分解决方案来查找违规记录:

select g.id, g.membernumber from groups g
left join secondary_groups sg on sg.id=g.id 
where convert(bigint, g.membernumber) > 2147483647 
or isnumeric(g.membernumber) = 0
Run Code Online (Sandbox Code Playgroud)

这适用于大多数事情,但后来我意识到,如果你的varchar值超过'bigint',它可能会失败.是否有更通用的方法来定位这些类型的记录,而不是使用强制转换?如果有一个"IsInt()"的内置方法,那将是很棒的...但是......

sql-server casting overflow

4
推荐指数
2
解决办法
8849
查看次数

标签 统计

casting ×1

overflow ×1

sql-server ×1