我们有 x2 列 min
和 max
。每个都可以是 null
或 integer
。当我们开始搜索抛出表时,我们不能使用 BETWEEN 命令...问题是,如何在具有此条件的范围内查找
value
大于min
(如果不为 null)
和
value
小于max
(如果不为空)
和
value
在min
和max
范围内(如果它们都不为空)
value
- 我们的整数。正如您所看到的,我们不能使用 BETWEEN 命令。
最佳答案
所以NULL意味着没有限制。您仍然可以使用BETWEEN
:
select *
from mytable
where @value between coalesce(minvalue, @value) and coalesce(maxvalue, @value);
或者简单地AND
:
select *
from mytable
where @value >= coalesce(minvalue, @value)
and @value <= coalesce(maxvalue, @value);
或者非常基本的AND
和OR
:
select *
from mytable
where (@value >= minvalue or minvalue is null)
and (@value <= maxvalue or maxvalue is null);
关于Mysql 与 Between\in 范围条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36502196/