私は0から2000000までの数字の範囲のテーブルを持っています。私は50と100の間で何かをすると、物事の記録を得るために文を使うことができます。それはうまくいきます。
しかし、私が走っている問題はこれ以来です"1FD32"という文字列の中に何かレコードがある場合は、varcharです。それを選択することはできません.SQLサーバはintを探しているので "50と100の間で"変換できません。どのようにしてこれらの範囲内のすべてのレコードを取得し、その中の文字を無視することができますか?
回答:
回答№1は5数値比較を行う場合は、エラーを保証する唯一の方法は、 CASE
ステートメント。これは、評価の順序を保証する唯一のSQLステートメントです(集約関数で使用されていない場合)。
したがって、ここで動作するコードは次のとおりです。
select *
from t
where (case when isnumeric(col) = 1 then cast(col as bigint) end) between 20 and 100
数字に小数点が含まれている場合は、 DECIMAL
または FLOAT
代わりに。