我有一张带有字母数字代码的表格。在这个特定的例子中,我不关心本质上是字母数字的代码,只关心那些包含整数的代码。我写了一个小查询来查找我需要的代码子集:
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 并且它运行,这意味着它们实际上是整数。我想使用这样的where
子句,因为代码 80600-80610 应该标记为 X,而 80611-80620 它们应该标记为 Y。我可以为每个代码手动执行此操作,但我希望比这更可扩展。
如何确保 SQL Server 在使用此 where 子句时只查看派生表,而不是失败?