2009-08-28 3 views
3

내가 문자열을 저장하는 내 테이블에 열이 (가 텍스트 열입니다) :의 MySQL 종류의 밑줄 마지막

VARCHAR (16) latin1_swedish_ci

내가 말할 때 문제가있다 "ORDER BY는 이름 ASC "는 끝에 밑줄로 시작하는 단어를 반환합니다. 이것은이 반환 예입니다 : 내가 정렬 PHP를 사용 내기

-a 
-mmddd2 
-z 
-z3 
aaa 
b 
c 
t 
_a 
___- 

하지만, MySQL이 대시 후 밑줄을 넣을 수 있도록하는 쉬운 방법은 무엇입니까? 나는 자바 스크립트 정렬 함수의 출력과 일치하도록 이렇게하고있다.

내가 얻으려고 : 사용 가능한 정렬 중 어느 것도 당신이 당신 자신을 정의 할 수 있습니다 필요한 정렬 순서를 사용하지 않는 경우 here 설명으로

-a 
-mmddd2 
-z 
-z3 
_a 
___- 
aaa 
b 
c 
t 

답변

5

Collations는 정렬 순서를 정의합니다.

+0

링크가 더 이상 작동하지 않습니다. –

+0

고마워요, @MikeFlynn. 링크가 수정되었습니다. –

1

나는이 우아한 솔루션을 말하는 게 아니에요,하지만 당신은 같은 일을 시도 할 수 :

select name 
from customers 
order by replace(name, '_', '-+') asc; 

그냥 대시 후 접두사 밑줄 값을 넣어 것입니다 무엇으로 +를 교체합니다.

+3

계산을 사용하는 ORDER BY 절은 해당 필드에있는 인덱스의 이점을 손상시킵니다. – ceejayoz