3

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

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

  1. 待定 374,500
  2. 谈判
  3. 299,000

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

... AND 价格 <= $maximum_price

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

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

4

4 回答 4

5

尝试这个...

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

SELECT CAST(price AS UNSIGNED INTEGER) price 
FROM tt order by price desc
于 2012-12-10T10:52:24.517 回答
0

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

于 2012-12-10T10:30:31.173 回答
0

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

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

于 2012-12-10T12:49:18.653 回答
0

也许是这样的:

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

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

于 2012-12-10T10:41:11.823 回答