我遇到了以下问题:
客户向我们提供了一个大型假日优惠数据库。优惠也是定价。给出以下结构
表
offers
字段
roomprice1
不幸的是,roomprice1字段被声明为" VARCHAR"因此不适合与" ORDER BY roomprice1 ASC / DESC进行比较/排序。
是否有方法(PHP / SQL)转换字段以便以正确的方式进行排序?
感谢您的任何建议
答案 0 :(得分:0)
如果您可以自己查询和编辑数据库,请执行以下操作:
ALTER TABLE `offers` CHANGE `offers` `roomprice1` INT( 255 )
否则,如果您想使用PHP,请使用PDO或mysqli准备这样的查询:
SELECT `roomprice1` FROM `offers`
并使用php迭代结果,使用intval()将字符串转换为整数。对于每次迭代,将新值放在另一个带有INSERT
的表中,或者将其保存在PHP数组中,然后可以sort()
答案 1 :(得分:0)
如果您不想更改表格,可以使用Cast功能重新排序。
...ORDER BY CAST('roomprice1' AS DECIMAL(10,2));
而不仅仅是正常的'ORDER BY'
如果您想了解更多有关投射的信息,请参阅以下链接: http://dev.mysql.com/doc/refman/4.1/en/cast-functions.html#function_cast