我试图在CakePHP中进行字符串排序,但是我遇到了一些错误。我有类似C.110,C.100.1,...,C.100.8的字符串。在MySQL中使用十进制/字符串排序
当我尝试使用命令:
ORDER BY CAST(plane_accounts.code AS DECIMAL(10,5))
的MySQL返回我有些喜欢:
C.110
C.110.8
C.110.1
C.100.2
有人知道如何解决这个问题?感谢帮助。
我试图在CakePHP中进行字符串排序,但是我遇到了一些错误。我有类似C.110,C.100.1,...,C.100.8的字符串。在MySQL中使用十进制/字符串排序
当我尝试使用命令:
ORDER BY CAST(plane_accounts.code AS DECIMAL(10,5))
的MySQL返回我有些喜欢:
C.110
C.110.8
C.110.1
C.100.2
有人知道如何解决这个问题?感谢帮助。
没有必要将其强制转换,在code
领域的普通ASC排序应该只是工作:
$this->PlaneAccount->find('all', array(
'order' => array(
'PlaneAccount.code' => 'ASC'
)
));
还是在普通的MySQL语法:
SELECT `code` FROM `plane_accounts` ORDER BY `code` ASC;
嘿,大家,坚持下去。我知道如何使用CakePHP来做到这一点,显然我试图用'ORDER BY plane_accounts.code'来做到这一点。 但是...当我这样做时,返回是: '5,A,B,B.100,C.110,C.110.1,C.110.10,C.110.11,C.110.2,C.110.3' 你现在可以看到问题了吗?我尝试使用CAST来正确排序这些字符串。 –
这仍然不会改变任何东西。如果您只是在代码字段上执行简单的ASC订单,您上面提到的数据仍将按照该顺序排列。否则,你应该更清楚你现在得到的顺序和你的期望。 – Oldskool
FlávioRicardo - 该订单的问题是什么?它看起来正确。每个Oldskool,发布你所得到的以及你希望得到的 - 这将帮助你很快得到你想要的答案。 – Dave
这看起来像一个SQL问题,你能发布完整的查询吗? – AlenBer
是否有任何理由不能只使用ORDER BY(plane_accounts.code)?此外,这似乎与CakePHP无关 - 只是一个MySQL问题。如果你得到MySQL的工作,那么如果你不明白如何实现,那么请问一下CakePHP。 – Dave