0

次の例外が発生しているデータベースにクエリを実行しています。

varchar 値 'B6UJ978023EC' をデータ型 int に変換するときに変換に失敗しました

どうすれば修正できますか?

4

2 に答える 2

3

私の推測では、クエリは次のようになります。

select * from mytable where SomeField = 'B6UJ978023EC' 

その場合は、データ型SomeFieldとして宣言されておりINT、Sql Server は動作しない に変換しようとして'B6UJ978023EC'INTます。

挿入/更新を行おうとしている可能性があるため、SomeField が INT の場合もこれは機能しません。

update mytable
  set SomeField = 'B6UJ978023EC'
where something = something

insert mytable (field1, field2, SomeField)
values(123, 'abc', 'B6UJ978023EC')

同じ結果、varchar 値 'B6UJ978023EC' をデータ型 int に変換するときに変換に失敗しました

この場合、列のデータ型を変更するか、変数の値を変更してください。

更新

列のデータ型(N)VARCHARに実数が含まれている場合は、探している数値を一重引用符で囲むだけです。

-- works
select * from mytable where SomeField = '123456'

-- doesn't work - same error
select * from mytable where SomeField = 123456
于 2012-08-01T09:33:29.380 に答える
1

これを試して:

エラーは、文字値を整数値に変換しようとしているためです。整数値のみを選択するように、以下の条件をクエリに追加するだけです

where  ISNUMERIC(col+ '.0e0')=1
于 2012-08-01T09:31:32.150 に答える