在我的表中有一列,它的类型是varchar。所有行中的值都是这样的:
+------------+----+
| price | id |
+------------+----+
| Rp 100000 | 1 |
| Rp 200000 | 2 |
| Rp 50000 | 3 |
| Rp 1000 | 4 |
| Rp 1000 | 5 |
| Rp 2000 | 6 |
| Rp 35000 | 7 |
| Rp 45000 | 8 |
我试过这个查询
SELECT table WHERE price between Rp 100000 AND Rp 200000
但结果它仍然获取不在中间范围内的行,例如它选择了 id 1,2,4,5,6
。
我认为这是由查询试图忽略的 0
值引起的。
我认为解决这个问题的方法是将此 var-char 视为数字(以印尼盾表示的价格/金额),以便查询识别我正在尝试做的事情。
任何人都可以帮助实现这一目标吗?提前致谢。
最佳答案
试试这个方法:
select * from yourTable
where substring(price,3) between 100000 and 200000
在这里查看:http://sqlfiddle.com/#!9/37197/4
您不需要cast
值,它将被隐式完成。
substring(price,3)
所做的是从 price
列的第三个字符开始获取所有内容,因此没有 RF
字符(还要注意空格)并与 between
运算符上的数字进行比较。
substring(price,3)
将返回一个字符串,但由于它仅由数字组成,因此 mysql 在与数字进行比较时将隐式转换它。
关于mysql - 视为数字并在两者之间搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29553420/