문제

chars로 저장된 숫자 열이 있습니다. 이 열에 따라 주문을 할 때 다음을받습니다.

100
131
200
21
30
31000
등.

이 숯을 어떻게 수치 적으로 주문할 수 있습니까? 무언가를 변환해야합니까, 아니면 이미 SQL 명령 또는 기능이 있습니까?

감사합니다.

도움이 되었습니까?

해결책

이 시도:

ORDER BY CAST(thecolumn AS int)

다른 팁

이것은 나를 위해 효과가있었습니다.

ORDER BY ABS(column_name)

이것은 "자연적인 종류"로 숫자 문자열을 주문하는 데 문제가됩니다 (Google에서 "자연 분류"를 조회하면 많은 물건을 찾을 수 있습니다). 본질적으로 문자열을 int로 캐스팅하고 결과 값을 정렬하면 수정해야합니다.

그 이유는 Char 데이터 유형을 사용하면 행을 문자열로 정렬하기 때문입니다.

아이디어 ORDER BY CAST() 맞지 만 반환 된 결과의 수가 증가함에 따라 이것의 성능이 줄어 듭니다.

이 열에서 숫자 데이터 일 경우 모범 사례는 적절한 숫자 데이터 유형을 찾고 변경하는 것입니다.

칼럼을 실제로 변경할 수없고 성능 문제가있는 경우 정렬 값을 정렬하는 정렬 열을 사용하는 것이 좋습니다 (적절한 값으로 전환 될 것인지 널).

정렬 순서 열을 색인하고 이상적으로는 Char 열에 트리거를 추가하여 char 값에 대한 삽입 또는 업데이트가 정수 값에 대한 업데이트를 트리거합니다.

어떤 상황에서는 이것이 좋은 일치 일 수 있습니다.

ORDER BY LENGTH(column_name), column_name

특히 모든 자릿수 또는 글자와 숫자가 혼합 된 열이 있지만 길이가 모두 같은 경우.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top