SQL Server で、テーブルから直接選択ステートメントを使用して挿入しようとすると、エラーが発生します
Conversion failed when converting the nvarchar value 'CLONED' to data type int.
このエラーをスローしている特定の行を確認する方法はありますか?
insert into manual_defect SELECT <long list of columns> from xyztable
SQL Server で、テーブルから直接選択ステートメントを使用して挿入しようとすると、エラーが発生します
Conversion failed when converting the nvarchar value 'CLONED' to data type int.
このエラーをスローしている特定の行を確認する方法はありますか?
insert into manual_defect SELECT <long list of columns> from xyztable
try catches を使用して行番号を捨てることができますが、すばやくデバッグするために私が見つけた最善の方法は、上位 1000 を選択し、次に 100 を選択して、問題の原因となっている行が見つかるまでそれを続けます。ただの提案
xyztable から選択している列の 1 つは nvarchar 型であり、manual_defect の一致する列は int です。その列にintに変換されないものが含まれているxyztableの行を見つける必要があります。
SELECT * FROM xyztable WHERE NOT ISNUMERIC(yournvarcharcolumn + '.0e0')
IsNumeric は、この場合は文字列になる値が数値型に変換できるかどうかをチェックします。チェックの前に「.0e0」を追加することにより、整数のみが機能することを確認します。これは、文字列形式の他の数値型は、末尾に追加すると有効な数値型でなくなるためです。
引用したエラーをスローしている単一の行のみを本当に見つけたい場合は、これがより迅速に機能します。
SELECT * FROM xyztable WHERE yournvarcharcolumn = 'CLONED'