需要检索介于两列之间的值

时间:2018-10-29 07:28:43

标签: sql

一个表具有低和高列。这些列包含范围。现在,当这些列之间存在给定值时,我想检索记录:

Low      High
0450     0459
0760     0765
0460     0467
0360     0369

我想检索记录'0464''0365''0466'在高低之间的记录。

我必须检索它是否是一条记录 为

select * 
from tablename 
where '0465' between low and high

但是我想要多个值都一样

1 个答案:

答案 0 :(得分:1)

OR运算符

您可以在WHERE子句中使用OR operator来连接多个条件。例如:

SELECT * 
FROM Ranges
WHERE (0464 BETWEEN low AND high) OR (0365 BETWEEN low AND high) OR (0466 BETWEEN low AND high);

还可以定义将通过OR运算符连接谓词的自定义SQL函数。该函数将使您简化查询语法。要定义自定义功能,请参阅数据库管理系统的文档。

交叉加入

另一种方法是构建范围和过滤器值的所有组合。假设您的数据库中有两个表。表Ranges定义了范围的lowhigh,表Filter包含了用于范围过滤的一组值。因此,以下查询返回包含Filter表中的值的所有范围:

SELECT low, high
FROM Ranges, Filter
WHERE Filter.val BETWEEN Ranges.low AND Ranges.high;

注意,查询结果包含范围的重复项。如果需要获取唯一范围,请使用GROUP BY子句或DISTINCT运算符。

可以使用临时表,子查询或集合来代替Filter表。

另请参阅live example

相关问题