Mysql查询比较字符串(varchar)为整数

时间:2012-12-10 10:21:13

标签: php mysql comparison type-conversion

我不确定mysql查询中是否有函数。我有一个价格表,列名是“价格”,其类型是VARCHAR()。出于多种原因,我故意需要它作为VARCHAR。

现在的问题是,如果我想以最高价格搜索产品,例如100000,但在我的专栏中,我们有不同类型的价格,例如: -

  1. TBD 374,500
  2. 协商
  3. 299000
  4. 我正在寻找像intVal()这样的函数,它首先将字段值本身转换为INTEGER并进行比较。以下是我在查询中的当前陈述: -

    ...和价格< = $ maximum_price

    可能是这样的解决方案:intVal(price)< = $ maximum_price

    对解决方案的任何帮助或指示表示赞赏。欢呼声

4 个答案:

答案 0 :(得分:4)

试试这个......

字符串值为“0”。其他值排序..

SELECT CAST(price AS UNSIGNED INTEGER) price 
FROM tt order by price desc

答案 1 :(得分:0)

我认为在PHP中没有这样的功能。你必须自己硬编码以获得合适的结果。

答案 2 :(得分:0)

可能是这样的:

SELECT ... WHERE CAST(SUBSTRING_INDEX(REPLACE(price, ',', ''), ' ', -1) AS SIGNED) <= $maximum_price

但我同意以前的评论,你最好重新考虑一下你的表。

答案 3 :(得分:0)

看起来您在价格列中有各种格式。我想你想比较一下列中的值是“TBD 374,500”然后比较374500到100000

在这种情况下,简单整数转换会将以char开头的所有价格转换为0.您必须在mysql中创建自己的函数来处理所有格式。