【问题标题】:Mysql query compare string (varchar) as integerMysql查询将字符串(varchar)比较为整数
【发布时间】:2012-11-27 17:59:30
【问题描述】:

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

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

  1. 待定 374,500
  2. 协商
  3. 299,000

我正在寻找一个像 intVal() 这样的函数,它首先将字段值本身转换为 INTEGER 并进行比较。以下是我当前的查询语句:-

... AND 价格

可能是这样的解决方案:intVal(price)

感谢您对解决方案的任何帮助或指导。干杯

【问题讨论】:

  • 清除数据库中的价格并存储为数字数据类型,使用单独的标志列标识“可协商”等

标签: php mysql comparison type-conversion


【解决方案1】:

试试这个...

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

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

【讨论】:

    【解决方案2】:

    可能是这样的:

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

    但我同意之前的评论,你最好重新考虑一下你的桌子。

    【讨论】:

      【解决方案3】:

      我认为在 PHP 中没有这样的功能。您必须自己对其进行硬编码才能获得合适的结果。

      【讨论】:

        【解决方案4】:

        看起来您在价格列中有各种格式。我认为您希望比较列中的值是否为“TBD 374,500”,然后将 374500 与 100000 进行比较

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-01-26
          • 2011-06-21
          • 2012-02-09
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多