在使用MySQL的BETWEEN范围时是否有无限或外卡?

时间:2012-10-07 09:41:36

标签: mysql

我有一个程序,我正在接受BETWEEN 1和100的MySQL查询的一系列输入。用户可以从网页中选择一个范围,以使查询在BETWEEN 100和(无论无穷大)之间。除非必须,否则我不想仅为无限选择更改MySQL查询。 BETWEEN 100和*之间有没有?如果是这样,语法是什么?谢谢!

2 个答案:

答案 0 :(得分:14)

不,在BETWEEN子句中无法使用通配符。但是你可以使用该类型的最小/最大可能值,这将达到同样的效果。

例如,如果您的列具有类型BIGINT(已签名),则可以使用9223372036854775807作为上限,因为这是该数据类型可能的最大值。

WHERE x BETWEEN 100 AND 9223372036854775807

列出here的整数值限制。


另一个明显的解决方案是,当其中一个目标无限制时,使用>=<=代替BETWEEN。但正如您所说,这需要更改查询。

WHERE x >= 100

还有一些方法可以避免使用更复杂的查询来更改查询,并在无效时提供NULL。

WHERE (x >= @lowerbound OR @lowerbound IS NULL)
AND (x <= @upperbound OR @upperbound IS NULL)

答案 1 :(得分:0)

我建议使用这个 当lower == null时,它将被0替换;当upper为null时,它将被一个max bigint替换

SELECT * FROM `mytable` WHERE 50 between ifnull(lower,0) and ifnull(upper,~0)