prosource

mysql 정렬 문자열 번호

probook 2023. 7. 27. 22:06
반응형

mysql 정렬 문자열 번호

저는 많은 다른 숫자를 저장하는 바르샤르 유형의 열을 가지고 있습니다.예를 들어, 세 개의 행이 있다고 가정합니다. 17.95, 199.95 및 139.95.mysql에서 해당 필드를 숫자로 정렬하려면 어떻게 해야 합니까?

가장 빠르고 단순합니까? 사용* 1

select *
from tbl
order by number_as_char * 1

사용하는 다른 이유* 1할 수 있다는 것입니까?

  1. 언더플로로 몇 가지 끔찍한 사고에서 살아남습니다(물건을 선택할 때 소수점 이하의 정밀도를 나타냄).
  2. 작업(무시) 열에 순수하게 포함되지 않은 데이터만 표시됩니다.
  3. 123A, 124A, 125A와 같은 영숫자 데이터의 숫자 부분을 제거합니다.

텍스트와 숫자가 포함된 차트 을 정렬해야 하는 경우 이 작업을 수행할 수 있습니다.

tbl 내용물: 2,10,a,c,d,b,4,3

select * from tbl order by number_as_char * 1 asc, number_as_char asc

예상 출력: 2,3,4,10,a,b,c,d

인수로 두 번째 순서를 추가하지 않으면 숫자만 정렬됩니다. 실제로 텍스트는 무시됩니다.

CAST 또는 CONVERT 기능을 사용합니다.

이 방법은 텍스트를 숫자로 정렬할 때 유용합니다.

SELECT `my_field` 
FROM `my_table` 
ORDER BY `my_field` + 0;

http://crodrigues.com/trick-mysql-order-string-as-number/ 에서 솔루션을 찾았습니다.

문자열을 선행 0으로 채웁니다.

ORDER BY LPAD(`column`,<max length of string>,"0")

소스 데이터가 호환되는 경우 이 작업을 수행할 수 있습니다.

SELECT column FROM table ORDER BY CAST(column AS DECIMAL(10,2))

그러나 대용량 데이터 세트의 경우에는 그리 빠르지 않습니다.가능하다면 사용할 스키마를 변경해야 합니다.DECIMAL하지만 애당초에.그런 다음 성능 향상을 위해 적절히 인덱싱할 수 있습니다.

언급URL : https://stackoverflow.com/questions/5417381/mysql-sort-string-number

반응형