2013-08-06 5 views
0

mysql 쿼리에서 varchar 유형의 열을 정렬하려고하지만 숫자 값을 가질 수도 있고 없을 수도 있습니다.mysql의 varchar 열을 Null 값과 함께 최하위로 정렬

for example it may have the values 

2012-10 
2012-41 
2012-1 

which should be sorted as follows: 
2012-1 
2012-10 
2012-41 

but if the values are : 
M-1 
M-13 
M-5 

it should be sorted as : 
M-1 
M-5 
M-13 

and if null values are present it should be last. 

가능한 경우 알 수 없습니다. 당신이 하이픈 이후의 번호로 숫자 정렬을 원하는 경우에

+0

하이픈 다음의 숫자로 숫자순으로 정렬하고 싶습니까? – Barmar

+0

아니 .. 1 차 유형에서와 마찬가지로 2012 년 값 이후에 오는 값인 2013-12도있을 수 있습니다. – Simone

답변

1

도와주세요, 이것을 사용 :

ORDER BY column IS NOT NULL, SUBSTRING_INDEX(column, '-', 1), CAST(SUBSTRING_INDEX(column, '-', 2) AS DECIMAL) 

column IS NOT NULLCAST() 표현은 숫자로 나머지를 정렬, 마지막으로 널 열을 정렬합니다.

+0

ur 답장을 보내 주셔서 감사합니다. bt 1 부와 정렬해야합니다. 작동하지 않을 것입니다. 그럴 경우. – Simone

+0

하이픈 앞 부분에서 다른 부분을 추가했습니다. 너는 그 질문에서 그렇게 말하지 않았다. – Barmar