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