SQL 주문 char 수치 적으로
-
20-08-2019 - |
문제
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
특히 모든 자릿수 또는 글자와 숫자가 혼합 된 열이 있지만 길이가 모두 같은 경우.
제휴하지 않습니다 StackOverflow