int に変換できない varchar エントリを持つ MSSQL のテーブル内の行を検出する方法が必要です。
私が取り組んでいるシステムは、ある場所で編集可能な 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()」の組み込みメソッドがあれば最高ですが、残念ながら...