视为数字并在其间搜索

时间:2015-04-10 04:31:24

标签: mysql sql

在我的表中有一个类型为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视为数字(Rupiah中的价格/数量),以便查询识别出我想要做的事情。

有人可以帮忙解决这个问题吗?提前致谢。

1 个答案:

答案 0 :(得分:2)

尝试这种方式:

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将隐式转换它。