我有一个 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
列更改为 INT
或 DECIMAL
或任何只要它是数字的列来重组表格.
但要直接回答您的问题,您可以这样做,但如果您定义了索引,则不使用任何索引。
WHERE CAST(REPLACE(REPLACE(price,'$',''),',','') AS SIGNED)
BETWEEN 2999 AND 20000
关于php - mysql BETWEEN 将返回 0 行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17633702/