2015-01-06 7 views
-2

난 내가 필드에이 같은 'kd_people를'기록이 , 문제를 해결하지 않은 안드로이드 :분야별 순서는

같은 결과 쿼리 " select kd_people from people order by kd_people desc"를 만들
P1 
    P2 
    P3 
    P4 
    P5 
    P10 

:

P1 
    P10 
    P2 
    P3 
    P4 
    P5 

하지만 난이 같은 결과를 원하는 :

P10 
    P5 
    P4 
    P3 
    P2 
    P1 

을 어떻게 t을 그는 정확한 질문을 했나요? 고마워, 내 영어로 미안.

+2

: 숫자가 아닌 접두사를 가정 예는 언제나 1 문자 숫자 부분을 추출하고 그 부분을 정렬 해보십시오. – Henry

+0

'DESC'를 사용하여 두 번째 결과를 얻으면 뭔가 이상합니다. 그렇지 않으면, @Henry는 그 권리를 가진다 : 열을'kd_people_prefix'와'kd_people_number'로 나누고, 후자가 문자열이 아니라 문자열을 가지고 있는지 확인하고,'ORDER BY kd_people_prefix DESC, kd_people_number DESC'. – Amadan

+0

숫자를 정렬하려는 경우 왜 텍스트로 저장 했습니까? –

답변

1

ID의 숫자 부분에 알파벳 순서가 아닌 숫자로 정렬하려는 것처럼 보입니다.

먼저 정렬 할 데이터를 데이터베이스 열에 직접 저장하는 것이 좋습니다. 즉, 스키마를 조금 수정하십시오.

SQL에서 수행하려면 SUBSTR()을 사용하여 숫자가 아닌 접두어를 제거하고 CAST()을 사용하여 나머지 숫자를 숫자로 바꿉니다. 문자열이 항상 P` 당신이 수`로 시작하는 경우

... ORDER BY CAST(SUBSTR(kd_people,2) AS INTEGER) DESC 

(당신이 게시 한 예를 정렬 오히려 DESC보다 ASC을 것 같았다.)