복붙노트

[SQL] SQL ORDER 수치가 문자

SQL

SQL ORDER 수치가 문자

나는 문자로 저장된 숫자의 열을 가지고있다. 나는이 열의에 의해 질서를 할 때 나는 다음을 얻을 :

(100) (131) (200) (21) (30) 31000 기타

어떻게 수치 이러한 문자를 주문할 수 있습니까? 내가 뭔가를 변환해야하거나 SQL 명령 또는 기능이 이미 존재합니까?

감사합니다.

해결법

  1. ==============================

    1.이 시도:

    이 시도:

    ORDER BY CAST(thecolumn AS int)
    
  2. ==============================

    2.이것은 나를 위해 일한 :

    이것은 나를 위해 일한 :

    ORDER BY ABS(column_name)
    
  3. ==============================

    3.이것은 (Google에서 "자연 정렬"을 조회하는 경우 물건의 톤을 찾을 수 있습니다) "자연 정렬"에 숫자 문자열을 주문에 문제가 있습니다. 기본적으로 int로서 문자열을 캐스팅하고 그것을 수정해야 결과 값에 정렬.

    이것은 (Google에서 "자연 정렬"을 조회하는 경우 물건의 톤을 찾을 수 있습니다) "자연 정렬"에 숫자 문자열을 주문에 문제가 있습니다. 기본적으로 int로서 문자열을 캐스팅하고 그것을 수정해야 결과 값에 정렬.

  4. ==============================

    4.그 이유는 문자 데이터 유형, 당신은 문자열로 행을 정렬하는 것입니다.

    그 이유는 문자 데이터 유형, 당신은 문자열로 행을 정렬하는 것입니다.

    CAST BY ORDER에 대한 생각은 ()이 성능이 반환 된 결과의 수가 증가함에 따라 아래로 이동합니다 그러나, 올바른 것입니다.

    그것은이 칼럼 만 수치 데이터의 경우, 가장 좋은 방법은 적절한 숫자 데이터 유형을 발견하고이를 변경하는 것입니다.

    당신이 정말로 열을 변경할 수 없습니다 및 성능 문제를 가진 자신을 발견 할 경우에, 나는 정수로 값 캐스트를 포함하는 정렬 순서 열 (것 널 (null)이 적절한 값으로 변환)을 갖는 것이 좋습니다.

    인덱스 정렬 순서 열 이상적으로는 CHAR 컬럼에 트리거를 추가 정수 값으로 char 값의 트리거가 삽입 또는 업데이트가 갱신 그래서.

  5. ==============================

    5.어떤 경우에는 이것은 좋은 경기를 할 수 있습니다

    어떤 경우에는 이것은 좋은 경기를 할 수 있습니다

    ORDER BY LENGTH(column_name), column_name
    

    당신은 모든 숫자 또는 동일한 길이의 문자와 숫자의 조합 제외한 모든 중 하나와 열이 특히합니다.

  6. from https://stackoverflow.com/questions/489874/sql-order-chars-numerically by cc-by-sa and MIT license