php - mysql BETWEEN 将返回 0 行

标签 php mysql between

我有一个 MySQL 表,其价格结构如下:

-------------------- 
| Price | item_id  |
--------------------
|$10,999|  123     |
|$5,889 |  321     |
|$2999  |  143     | 
|------------------|

现在如果我查询这个:

SELECT * FROM products WHERE price BETWEEN "$2999" AND "$6000";

它将返回两行。但是如果我查询这个:

SELECT * FROM products WHERE price BETWEEN "$2999" AND "$20000";

它不会返回任何行,因为它预计至少会返回 3 行?

请注意,还有许多其他行,如 $11,000 等等...

如有任何帮助,我们将不胜感激!

最佳答案

您应该将其存储为字符串或 varchar。它现在执行的方式是比较字符串,这就是你没有结果的原因。如果我是你,我将通过将 Price 列更改为 INTDECIMAL 或任何只要它是数字的列来重组表格.

但要直接回答您的问题,您可以这样做,但如果您定义了索引,则不使用任何索引。

WHERE CAST(REPLACE(REPLACE(price,'$',''),',','') AS SIGNED) 
      BETWEEN 2999 AND 20000

关于php - mysql BETWEEN 将返回 0 行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17633702/

相关文章:

mysql - 使用数组在两个日期之间插入

mysql - 哪个日期时间范围扫描性能更好: BETWEEN or comparison operators

mysql - 在jsp页面中不断从数据库加载数据

php - 如何计算 MySQL 表中的行数?

php - 使复选框在未选中时返回 false

javascript - 使用 JQuery/PHP 的状态脚本不会在另一个表上显示颜色

mysql - 如何从 MYSQL 查询中的其他选择中进行选择?

sql - 选择日期和不包括年份的月份之间的日期

php - 在不使用循环的情况下将字符串分解为关联数组?

php - 如何使用函数名和参数作为变量来调用适当的函数? PHP