0

大家好,我有一个 MySQL 查询

SELECT * FROM `product` WHERE `price` BETWEEN '60' AND '999' ORDER BY `product` DESC LIMIT 12 OFFSET 0

这显然选择了价格在 60 到 999 之间的 12 种产品。这正确显示了行。

但是,如果我像这个查询一样增加限制

SELECT * FROM `product` WHERE `price` BETWEEN '60' AND '1000' ORDER BY `product` DESC LIMIT 12 OFFSET 0

没有显示行。任何想法为什么会发生这种情况?“价格”字段为浮点型字段

4

3 回答 3

2

删除 ' 因为字段类型是数字,而不是字符。

于 2010-11-18T11:31:21.903 回答
0

您将'60''1000'视为角色。使用数字:

where `price` between 60 and 1000

如果您使用 varchar 字符串,则没有行会匹配 varchars 中的between'60' 和 '1000' condition, since'1000' is smaller than'60'`。

它正在使用,'999'因为可能有几个价格介于'6'和之间'9'

mysql> select '60' < '9';
+------------+
| '60' < '9' |
+------------+
|          1 | 
+------------+
1 row in set (0.00 sec)
于 2010-11-18T11:31:53.453 回答
0

60、999 和 1000 被视为 chars 而不是 float 或 int,

它与 999 一起使用的原因是因为比较发生在 ascii 字符上。

对于 1000,由于 6 的值高于 1,因此您不会得到任何价格与 ascii 从 6 到 1 之间的行。

于 2010-11-18T11:32:41.387 回答