Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Mysql';介于'之间;如果varchar字段的值大于9999,则条件不起作用_Php_Mysql - Fatal编程技术网

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

Php Mysql';介于'之间;如果varchar字段的值大于9999,则条件不起作用,php,mysql,Php,Mysql,如果范围超过9999,则MySQLbetween不起作用 字段类型为varchar 如果范围低于9999,则其工作正常 查询如下: SELECT `restaurant_details`.* from restaurant_details Where `restaurant_details`.`value` BETWEEN '8001' AND '12000' 要想弄清楚什么是错的,可以问自己一个问题,“8001”和“12000”之间的字符串是什么?也就是说,哪个表达式大于“8”而小于“1”

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

字段类型为varchar

如果范围低于9999,则其工作正常

查询如下:

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

要想弄清楚什么是错的,可以问自己一个问题,“8001”和“12000”之间的字符串是什么?也就是说,哪个表达式大于“8”而小于“1”


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

要找出错误,请自问一个问题,“8001”和“12000”之间的字符串是什么?也就是说,哪个表达式大于“8”而小于“1”


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

您可以将
VARCHAR
转换为
整数(无符号)
,以进行适当的比较:

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

EDIT:忘了提及您还必须在数字(本例中为8001和12000)周围加引号,因此
MySQL
也将其解释为
整数。

您可以将
VARCHAR
强制转换为
整数(无符号)
,以进行适当的比较:

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

EDIT:忘了提及您还必须删除数字周围的引号(本例中为8001和12000),因此
MySQL
也将其解释为
整数。

您能显示您正在查询的列吗?varchar不是这样工作的。它按字母顺序排序,而不是数字
SHOW CREATE TABLE restaurant\u details
请。您能显示要查询的列吗?varchar不是这样工作的。它按字母顺序排序,而不是数字
SHOW CREATE TABLE restaurant\u details
please。如果我修改“8000”和“9999”这样的范围,值在数据库中可用并起作用。但是当我增加它时,没有得到任何结果,因为1小于8。这是一根绳子。@Krishna:没错。高达9999,可能存在匹配项。请注意,
81000
也匹配!如果我修改诸如“8000”和“9999”之类的范围,则值在数据库中可用并起作用。但是当我增加它时,没有得到任何结果,因为1小于8。这是一根绳子。@Krishna:没错。高达9999,可能存在匹配项。请注意,
81000
也匹配!