0

我遇到了以下问题:

一位客户向我们提供了一个庞大的假期优惠数据库。优惠也有定价。给出以下结构

桌子

offers

场地

roomprice1

不幸的是,roomprice1 字段被声明为“VARCHAR”,因此不适合与“ORDER BY roomprice1 ASC/DESC”进行比较/排序。

有没有办法(PHP/SQL)来转换字段,以便以正确的方式排序?

感谢您的任何建议

4

2 回答 2

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

于 2013-04-24T17:01:15.483 回答
0

如果您可以自己查询和编辑数据库,请执行以下操作:

ALTER TABLE  `offers` CHANGE  `offers`  `roomprice1` INT( 255 )

否则,如果您想使用 PHP,请使用 PDO 或 mysqli 准备这样的查询:

SELECT `roomprice1` FROM `offers`

并使用 php 遍历结果,使用intval()将字符串转换为整数。对于每次迭代,将新值放在另一个表中INSERT或将其保存在 PHP 数组中,然后您可以sort()

于 2013-04-24T16:55:46.220 回答