Mysql'之间'如果varchar字段的值大于9999,则条件不起作用

时间:2014-09-03 06:25:42

标签: php mysql

如果范围超过9999,则MySQL between不起作用。

字段类型为varchar。

如果范围低于9999,它可以正常工作。

下面列出的查询:

SELECT `restaurant_details`.*
from restaurant_details 
Where `restaurant_details`.`value` BETWEEN '8001' AND '12000'

2 个答案:

答案 0 :(得分:3)

您可以将VARCHAR投射到INTEGER ( UNSIGNED )进行正确比较:

SELECT `restaurant_details`.*
from restaurant_details 
Where CAST(`restaurant_details`.`value` AS UNSIGNED) BETWEEN 8001 AND 12000

编辑:忘记提及您还必须删除数字周围的引号(在这种情况下为8001和12000),以便MySQL将它们解释为integers

答案 1 :(得分:1)

要弄清楚出了什么问题,请问自己一个问题,在8001' 8001' AND' 12000'?也就是说,什么表达式大于' 8'并且不到' 1'。

答案是没有字符大于8且小于1。如果数据中出现小数,您可能希望将字符串转换为整数或浮点数。