これが私のSQLです
SELECT * FROM Answers
WHERE QuesID = 1 AND OptionID IN (2,5) AND CONVERT(float, ISNULL(AnswerValue, 0)) < 300
問題は、OptionID = 6の文字列であるレガシーデータがあることです。上記のクエリを実行すると、次のようになります。
データ型varcharをfloatに変換中にエラーが発生しました。
QuesID = 1のすべてのデータを確認し、OptionId IN(2,5)はすべてfloatデータです。SQLが最初にこのSQLの計算部分を実行しているようですが、AnswerValue比較を実行する前にOptionIDをチェックさせる方法はありますか?それとも私は完全にベースから外れていますか?