ColumnAにCAST関数(FLOATに対して)を実行するSQLがあります。 SQLには、最終的にColumnAに数値以外の値を持つ行を間接的にフィルタするフィルタがあります。しかし、私がパラレルでSQLの部分を実行することによると信じているので、CASTはフィルタされた行にも適用され、SQLは "floatとして値をキャストできません" 「float型の値をキャストできません
私はSQLが期待通りに動作することを
OPTION (MAXDOP 1)
をクエリヒントを追加することにより、1つのPROCで実行した場合ことを知っています。私は1 procで実行すると、その値のキャスティングが成功するようにcolumnAの非数値の行を除外するためにフィルタを強制的に適用すると思われます。私はまた、クエリヒントを使用して
OPTION (FORCE ORDER)
修正問題、私はあまりにもbecausethisを想定していますが、フィルタが最初に適用され、私は1つが、1気筒で実行されているより良いクエリのパフォーマンスを得るされることを確実にすることがわかりました。
私は第2のオプションを使用して問題を修正しています。もし私がここで何が起こっているのかについての誤解がある場合、あるいは私の一般に解説したいと思う人が解説したいと思う人がいるなら、それを感謝します。
私は、Microsoft SQL Server 2008 R2(RTM)
上で実行しています - 10.50.1720.0(X64)2010年6月12日1時34分59秒 著作権(c)マイクロソフトコーポレーションのEnterprise Edition (64 Windows NT 5.2上のビット)(3790ビルドします:サービスパック2)
付け足し:いいだろうと思われ
は、T-SQLの文字列ができたかどうかを確認するには、以下の機能を持っていたあります〜する特定のデータ型に変換されます。
IsFloat IsNumeric関数 IsInteger など
私は実際にどのように多くの列VARCHAR(255)のように定義されている私は、私達のデータベースで検索するデータのすべての種類のに悩まされています。私は解決策は「そうしない」と思う。
SQLを表示できますか? – MatBailie
実際に車を見ずに車の修理をお手伝いしています。私たちに車を見せてください。 – JNK
T-SQLにはIsNumericの – MatBailie