>데이터 베이스 >MySQL 튜토리얼 >MySQL의 'ORDER BY' 절에서 영숫자 데이터를 올바르게 정렬하는 방법은 무엇입니까?

MySQL의 'ORDER BY' 절에서 영숫자 데이터를 올바르게 정렬하는 방법은 무엇입니까?

DDD
DDD원래의
2024-12-21 03:45:13218검색

How to Correctly Sort Alphanumeric Data in MySQL's `ORDER BY` Clause?

MySQL 'Order By' - 영숫자를 올바르게 정렬

MySQL에서 'Order By' 절은 지정된 열의 값을 기준으로 데이터를 정렬합니다. 그러나 영숫자 데이터를 처리할 때 기본 정렬 방법은 첫 번째 숫자를 우선시하므로 잘못된 순서로 이어집니다.

문제 이해

예를 들어 다음과 같은 데이터가 있는 경우:

1
2
3
4
5
6
7
8
9
10
11
12

그리고 쿼리를 실행합니다.

select * from table order by xxxxx asc

결과는 다음과 같습니다. 다음과 같이 정렬됩니다:

1
10
11
12
2
3
4
5
6
7
8
9

순서는 이후 문자에 관계없이 첫 번째 숫자로 결정되기 때문입니다.

문제 해결

영숫자 데이터를 올바르게 정렬하려면 , 다양한 트릭을 사용할 수 있습니다.

  1. 바이너리 방식: 여기에는 영숫자 값을 바이너리로 변환하고 이진수 값을 사용하여 정렬하는 작업이 포함됩니다.
  2. 캐스트 방식을 사용한 영숫자 정렬: 이 접근 방식은 영숫자 값을 부호 있는 대로 캐스팅합니다. 정수를 사용하여 정수 표현을 사용하여 정렬합니다.
  3. 자연 정렬: 이 방법은 숫자와 문자를 모두 고려하여 값의 자연스러운 순서에 따라 데이터를 정렬합니다.
  4. 영숫자 값과 혼합된 숫자 값 정렬: 이 경우 영숫자 값을 부호 없는 정수로 변환하고 숫자와 함께 정렬할 수 있습니다. 값.

코드 예

Bin 방식을 사용한 영숫자 정렬:

SELECT 
tbl_column, 
BIN(tbl_column) AS binray_not_needed_column
FROM db_table
ORDER BY binray_not_needed_column ASC , tbl_column ASC

자연 정렬:

SELECT alphanumeric, integer
       FROM sorting_test
       ORDER BY LENGTH(alphanumeric), alphanumeric  

영숫자 값과 혼합된 숫자 값 정렬:

SELECT version
FROM version_sorting
ORDER BY CAST(version AS UNSIGNED), version;

이러한 트릭을 사용하면 영숫자 데이터가 정렬되도록 할 수 있습니다. 정확하게 항목의 원하는 순서를 유지합니다.

위 내용은 MySQL의 'ORDER BY' 절에서 영숫자 데이터를 올바르게 정렬하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.