2011-12-12 9 views
0

CakePHP에서 문자열 정렬을 시도하고 있지만 여기에 몇 가지 실수가 있습니다. 저는 C.110, C.100.1, ..., C.100.8과 같은 문자열을 가졌습니다.MySQL에서 10 진수/문자열로 정렬

내가 사용 주문하려고 :

ORDER BY CAST(plane_accounts.code AS DECIMAL(10,5)) 

MySQL이 나에게 반환 몇 가지와 같은 :

C.110 
C.110.8 
C.110.1 
C.100.2 

누군가가이 문제를 해결하는 방법을 알아? 도와 주셔서 감사합니다.

+0

, 전체 쿼리를 게시 할 수 있습니까? – AlenBer

+0

ORDER BY (plane_accounts.code)를 사용할 수없는 이유가 있습니까? 또한 이것은 CakePHP와는 아무런 관련이없는 것으로 보입니다. MySQL을 작동 시키면 구현 방법을 모르는 경우 CakePHP에 대해 물어보십시오. – Dave

답변

0

캐스팅 할 필요는 code 필드에서 일반 ASC 정렬이 없습니다 그냥 작동해야합니다

$this->PlaneAccount->find('all', array(
    'order' => array(
     'PlaneAccount.code' => 'ASC' 
    ) 
)); 

또는 일반 MySQL의 구문

: 이것은 SQL 문제처럼 보인다

SELECT `code` FROM `plane_accounts` ORDER BY `code` ASC; 
+0

모두 안녕하세요. 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를 사용하여이 문자열을 올바르게 정렬하려고합니다. –

+0

그래도 아무 것도 바뀌지 않습니다. 앞에서 언급 한 데이터는 코드 필드에서 일반 ASC 순서 만 수행하면 그 순서대로 저장됩니다. 그렇지 않으면 지금 어떤 순서로, 그리고 무엇을 기대할 지에 대해 더 분명히해야합니다. – Oldskool

+0

Flávio Ricardo - 그 명령의 문제점은 무엇입니까? 그것은 올바른 것 같습니다. Oldskool 당, 당신이 얻고있는 것을 게시하고 당신이 바라는 것을 게시하십시오 - 그것은 당신에게 당신이 원하는 답변을 얻는데 많은 도움이 될 것입니다. – Dave

관련 문제