英数字コードを含むテーブルが1つあります。この特定の例では、私は本質的に英数字であるコードには関心がなく、整数を含むコードのみに関心があります。必要なコードのサブセットを見つけるために、小さなクエリを作成しました。
select CAST(icd as float) as icd
from
(
select i.icd
from icd as i
where icd like '952%' or icd like '806%' or icd like '3440%' or icd like '3441'
)t
これにより、必要なコードのリストが返されます。ただし、次のようなwhere句を使用しようとすると次のようになります。
where icd between 80600 and 80610
クエリが失敗し、varcharデータ型をintに変換できないことを通知します。しかし、私が次のようなことをすると
select CAST(icd as float) as icd,icd+10
from
(
select i.icd
from icd as i
where icd like '952%' or icd like '806%' or icd like '3440%' or icd like '3441'
)t
各コードに10を追加すると、実行されます。つまり、実際には整数です。コード80600-80610にはXのラベルを付け、80611-80620にはYのラベルを付ける必要があるため、このような句を使用しますwhere
。コードごとに手動でこれを行うことができますが、それよりも拡張性が高くなります。
このwhere句を使用するときに、SQL Serverが失敗するのではなく、派生テーブルのみを参照するようにするにはどうすればよいですか?