2013-04-18 3 views
0

VARCHAR 열이있는 MySQL 테이블이 있습니다. 열은 숫자 만 포함하고 있으며 숫자로 정렬 할 수 있기를 원합니다. 예를 들어 100, 101, 1001로 정렬 할 수 있습니다. 현재 100, 1001, 101 등으로 정렬합니다. 콜레이트 속성을 추가하기 위해 테이블을 간단하게 변경할 수 있다고 들었습니다. 그것은 숫자로 정렬됩니다. 내가 "표시 일지"를 입력하면 varchar 열을 숫자로 처리하는 것으로 보이는 데이터 정렬 유형이 표시되지 않습니다.콜레이트를 사용하여 varchar 열을 숫자로 정렬

제 질문은,이 varchar 열을 수치상으로 정렬하는 데 사용할 수있는 데이터 정렬은 무엇입니까?

답변

2

varchar 열에 숫자 만 들어 있으면 정수 열이어야합니다. 그렇지 않으면, 당신은

ORDER BY CAST(col AS SIGNED) 

See the demo

0

을 할 수 없습니다에는 내장 숫자로 숫자 값을 비교하는 것입니다 정렬.

독자적으로 개발할 수 있지만 공유 호스팅 및 이와 유사한 것들에 배포하는 데 어려움을 겪습니다.

당신이 정렬 인덱스를 사용하지으로 OK 경우, 당신은 단지 정수로 캐스팅 할 수 있습니다

SELECT * 
FROM mytable 
ORDER BY 
     CASE field REGEXP '^-?[0-9]$' THEN CAST(field AS SIGNED INTEGER) END 
관련 문제