为给定范围筛选数据的最佳方式



我需要从给定的表中查找过程代码在'Q5000'和'Q5090'之间的Claims。我可以为Int代码编写一个函数,但不确定如何最好地处理SQL Server中的字符范围?

我可以手动编写所有代码并过滤它们,但有没有任何方法可以让我提供第一个和最后一个值,SQL生成完整的值集。

Select * 
from   dbo.claims 
where  ProcedureCode in ('Q5000',Q5001','Q5002',....,'Q5090')

你可以尝试这个简单的破解

选择*FROM dbo.claimsWHERE过程代码类似"Q50__"AND TRY_CONVERT(INT,RIGHT(过程代码,2((<91;

另一个线程中的这个答案可能对您有所帮助。

您也可以尝试这样做,假设相同的单个字符是起始字符

SELECT * FROM dbo.claims WHERE RIGHT(ProcedureCode, LEN(ProcedureCode)-1) BETWEEN 5000 AND 5090

如果字符串的长度相同,并且以相同的字母开头
然后您可以简单地使用BETWEEN

Select * 
from   dbo.claims 
where  ProcedureCode BETWEEN 'Q5000' AND 'Q5090'

你看,字符比较的问题在于长度不同。

例如,字符串"2"大于字符串"10">
因为字符"2"位于"1"之后
但是"A02"小于"A10"。

最新更新