1

次の 2 つのクエリは正常に機能します。

select cast(sku as bigint) from bid                 
select cast(sku as bigint) from vwbidrecords       

このクエリは、「データ型 varchar から bigint への変換エラー」というメッセージで失敗します。

select * from bid where cast(sku as bigint) in  
(select cast(sku as bigint) from vwbidrecords)

最初の2つは問題ないのに、3番目が機能しない理由は誰にとっても理にかなっていますか?

4

1 に答える 1

3

ビューを使用していますが、複数テーブルの結合 (ビューを数値 SKU のみにフィルター処理する) が含まれているか、少なくとも WHERE 句を含む単一のテーブルが必要であると推測しています。

また、ほとんどの場合、ビュー クエリに ISNUMERIC テストが含まれます。

このバグをチェックしてくださいSQL Server should not raise illogical error理由を説明しています

データ型 varchar を bigint に変換中にエラーが発生しました。

予期しないときに発生します。事実

select cast(sku as bigint) from vwbidrecords

単独で動作するのは、クエリ 3 とは異なる方法で最適化されていることを意味するだけです。両方の実行計画を確認すると、より明確になります。

于 2013-05-11T04:55:25.020 に答える