SQL에서 숫자가 포함된 문자열 열 정렬
숫자가 포함된 문자열 열을 정렬할 때 기본 MySQL 정렬 알고리즘은 문자 뒤에 숫자를 배치합니다. 이는 항상 원하는 동작은 아닙니다.
문제:
숫자가 포함된 다음 문자열 열을 오름차순으로 정렬합니다.
name |
---|
a 1 |
a 12 |
a 2 |
a 3 |
예상되는 동작 결과는 다음과 같습니다.
name |
---|
a 1 |
a 2 |
a 3 |
a 12 |
SQL을 사용한 솔루션:
열 패턴이 항상 "WORD space NUMBER"라고 가정하면 다음 SQL 쿼리를 사용할 수 있습니다.
<code class="sql">SELECT * FROM table ORDER BY CAST(SUBSTRING(column, LOCATE(' ', column) + 1) AS SIGNED);</code>
또는 SUBSTRING_INDEX:
<code class="sql">ORDER BY SUBSTRING_INDEX(column, " ", 1) ASC, CAST(SUBSTRING_INDEX(column, " ", -1) AS SIGNED);</code>
설명:
이 솔루션은 문자열에서 공백 문자 뒤의 하위 문자열에 항상 숫자가 포함된다는 사실에 의존합니다. 이 하위 문자열을 숫자 값으로 변환하면 문자 접두사를 무시하고 열을 숫자로 정렬할 수 있습니다.참고:
문자열 열이 " WORD 공백 NUMBER" 패턴, 원하는 정렬 결과를 얻으려면 추가 논리 또는 문자열 조작 기능이 필요할 수 있습니다.위 내용은 MySQL에서 숫자가 포함된 문자열 열을 오름차순으로 정렬하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!