MySQL的BETWEEN包括两个端点之间的所有结果 以及端点。
如果expr大于或等于min且expr小于或等于
至最大值,BETWEEN返回1,否则返回0.这相当于
如果所有参数都是表达式(min <= expr AND expr <= max)
属于同一类型。参考- http://dev.mysql.com/doc/refman/5.0/en/comparison-operators.html#operator_between
有没有这样的功能 REALLYBETWEEN
它不包括端点,或者我坚持使用 min < expr AND expr < max
?
我想你可以自己写一下:
where val > start and val < end
之间是:
where val >= start and val <= end
对于索引,前两个应该正确使用索引并且相同 between
,假设开始和结束是常量。我不确定最后一个版本是否会。
如果val是一个复杂的表达式,请考虑以下内容:
select *
from (your query here) t
where t.val > start and t.val < end
这应该评估 val
只有一次。我认为其他形式会对它进行两次评估。
或者,你可以这样做:
where val between start and end and val not in (start, end)
注意 BETWEEN
是一个表达,而不是一个功能。它只是一种编码方便,而且意味着所说的内容。没有性能优势。
要排除端点,您必须自己编写代码。