2011-03-04 10 views
3

Sqlite로 VarChar 필드를 정렬하려고합니다.sqlite로 숫자와 숫자를 정렬하십시오.

필드는 숫자 또는 숫자 + 문자를 포함 할 수 있습니다, 그러나 나는 다음과 같이 번호 순서대로 정렬 할 필요

 
1 
1a 
1b 
5 
5x 
5y 
10 
10d 
10e 
10g1 
11 
11a 
11b 
100c 
100f 

어떤 아이디어? 내가이 일을 할 수있었습니다 ... 그것은 가까운 (그러나 아주) 내가 필요한 : 1 다섯 글자의 종류 다음

패드 '00000'과 필드의 시작과

답변

1

기본 제공 기능을 사용하여이 작업을 수행하는 쉬운 방법은 없습니다. sqlite3_create_collation (또는 원하는 프로그래밍 언어의 해당 래퍼)을 사용하여 natural sort을 구현하는 문자열 비교 함수를 정의하십시오.

+0

-1 오답 – RichardTheKiwi

11

쉬운

select col from tbl order by col*1, col 
+0

니스! 하지만 처음에는 숫자에 대해서만 작동합니다. "10g9"와 "10g10"정렬 순서가 잘못 지정됩니다. – dan04

+2

@dan true이지만, 위의 모든 데이터와 "numbers + letters"(number _then_ letter) 형식으로 정확하게 작동합니다. – RichardTheKiwi

+0

글자 + 숫자가있는 경우는 어떻게됩니까? 예 : A1, A2, A10 등? – Michael

관련 문제