我需要一种方法来检测 MSSQL 中表中带有无法转换为 int 的 varchar 条目的行。
我正在处理的系统在一个地方使用了一个可编辑的 varchar 字段,并将其连接到另一个地方的一个整数列。如果 varchar 字段中的数字无效(空白,带有字母或符号,或者将是超过 21 亿的数字(最大 int 大小)),则另一个查询失败,表示值 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
这对大多数事情都很好,但后来我意识到,如果你的 varchar 值超过'bigint',它可能会被打败。是否有更通用的方法来定位这些类型的记录,而不是使用强制转换/转换?如果有一个“IsInt()”的内置方法,那就太棒了,但是唉......