我不确定mysql查询中是否有函数。我有一个价格表,列名是“价格”,其类型是VARCHAR()。出于多种原因,我故意需要它作为VARCHAR。
现在的问题是,如果我想以最高价格搜索产品,例如100000,但在我的专栏中,我们有不同类型的价格,例如: -
我正在寻找像intVal()这样的函数,它首先将字段值本身转换为INTEGER并进行比较。以下是我在查询中的当前陈述: -
...和价格< = $ maximum_price
可能是这样的解决方案:intVal(price)< = $ maximum_price
对解决方案的任何帮助或指示表示赞赏。欢呼声
答案 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中创建自己的函数来处理所有格式。