programing

MySQL에서 먼저 숫자를 기준으로 레코드를 정렬한 후 알파벳 순으로 정렬

kingscode 2022. 10. 2. 21:55
반응형

MySQL에서 먼저 숫자를 기준으로 레코드를 정렬한 후 알파벳 순으로 정렬

"test"라는 테이블이 있는데, "custom_id"라는 열이 있습니다. 이 열은 알파벳과 정수를 혼합한 것일 수 있습니다.MySQL 쿼리는 먼저 정수를 기준으로 정렬한 다음 문자열의 알파벳을 기준으로 정렬합니다.예:

Input:
1b
1a
Apple5
Apple1
Bapple2
Bapple5
2a
3

Output (in ASC):
1a
1b
Apple1
2a
Bapple2
3
Apple5
Bapple5

위는 문자열의 길이에 따라 정렬되지 않기 때문에 자연스러운 정렬과는 조금 다릅니다.MariaDB에서 작동하는 다음과 같은 질문이 있습니다만 MySQL 솔루션을 찾고 있습니다(절차하지 마십시오).

SELECT custom_id FROM test
ORDER BY CAST(REGEXP_SUBSTR(custom_id,'[0-9]+') AS UNSIGNED) ASC, custom_id ASC

0+custom_id선두 숫자의 값을 알 수 있습니다.선행 제로가 없는 경우LENGTH(0+custom_id)얼마나 벗어야 하는지 말할 수 있을 거야적절한 것을 사용MID(...)그 많은 캐릭터들을 불러오도록 하겠습니다.

언급URL : https://stackoverflow.com/questions/45069595/sorting-records-first-by-numbers-and-then-alphabets-in-mysql

반응형