2012-08-05 2 views

답변

2

이 나를 위해 일한 : 어떻게하면 다음과 같은 결과를 얻으려면 문에 의해 순서를 사용할 수 있습니다

mysql> select * from sorting; 
+---------+ 
| field1 | 
+---------+ 
| 1  | 
| 4  | 
| 10  | 
| Item 1 | 
| Item 10 | 
| Item 0 | 
| 0  | 
+---------+ 
7 rows in set (0.00 sec) 

mysql> select field1 from sorting order by length(field1),field1 asc; 
+---------+ 
| field1 | 
+---------+ 
| 0  | 
| 1  | 
| 4  | 
| 10  | 
| Item 0 | 
| Item 1 | 
| Item 10 | 
+---------+ 
7 rows in set (0.00 sec) 
+0

정말 고마워요! –

1

을이 시도 :

order by (case when left(str, 1) between '0' and '9' then 1 
       else 0 
      end) desc, 
     (case when left(str, 1) between '0' and '9' then cast(str as unsigned) 
      end), 
     cast(substring(str, instr(' ', str)+1, 100) as unsigned) 

이 임의의 초기 문자열 작동합니다 . 초기 문자열과 숫자 사이에 공백이 있다고 가정합니다.

관련 문제