有没有办法在数据库中查询范围表达式?

Is there a way to query a ranged Expression in DB?

我们的应用程序是一个大型机,它是一个 IBM iSeries – DB2 数据库设置。我们的一些 table 值有一个范围。

Ex: 100;105;108;110:160;180

--更新--

以上数据来自单行(准确地说是单列)。在相同的格式中会有多个值(在不同的行上)

在这种情况下,各个值由“;”分隔但是 110:160 是一个范围。它包括从 110 到 160 的所有值。现在,对于各个值,我们显然使用了类似的语句。前任;如果我必须查询 105。 这里的挑战是,如果 我必须查询 125,这在技术上不存在于数据库中。但是,从逻辑上讲,我需要检索该记录。

系统(应用程序)以某种方式能够完成此操作,我不确定是如何做到的。我不是大型机开发人员,我只需要查询数据库以检索我们处理的某些自动化的特定记录。

作为解决方法,我可以想到两件事:

由于两者都是解决方法,我很好奇系统是如何做到的。 (我联系了应用程序的开发人员。到目前为止,运气不好)。那么是否有直接的方法来实现这一点?它可以是一个存储过程吗?

如果我答对了你的问题,你的示例值不是在一行中而是在多个行中 - 否则必须进行一些预处理。 我会用 SQL 将组合值分解成它的组件 - 比如:

with temp(id, text, value1, value2) as (
select id, text
      ,case when posstr(id,':') > 0 
            then substr(id, 1, posstr(id,':') - 1)
            else id
       end as value1
      ,case when posstr(id,':') > 0 
            then substr(id, posstr(id,':')+1 , length(id)) 
            else id
       end as value2
from testrange
)
select * from temp 
 where 125 between value1 and value2