집 >데이터 베이스 >MySQL 튜토리얼 >SQL에 포함된 숫자를 사용하여 문자열 열을 정렬하려면 어떻게 해야 합니까?
SQL에서 숫자가 포함된 문자열 열 정렬
SQL에서 숫자가 포함된 문자열 열을 정렬하는 것은 어려울 수 있습니다. 많은 데이터베이스의 자연스러운 정렬 알고리즘은 "a 1" 뒤에 "a 12"를 배치하는 것과 같이 숫자를 잘못된 순서로 배치합니다. 이 동작은 대부분의 애플리케이션에서 허용되지만 특정 요구 사항에는 바람직하지 않을 수 있습니다.
순수 SQL을 사용하여 숫자가 포함된 문자열 열을 정렬할 수 있습니까?
해결책
열이 "WORD space NUMBER"라는 특정 패턴을 따른다고 가정하면 다음 코드 조각을 사용하여 열을 올바르게 정렬할 수 있습니다.
SELECT * FROM table ORDER BY CAST(SUBSTRING(column,LOCATE(' ',column)+1) AS SIGNED)
작동 방법은 다음과 같습니다.
개념 증명
다음 예는 정렬 동작을 보여줍니다.
mysql> INSERT INTO t (st) VALUES ('a 1'),('a 12'),('a 6'),('a 11'); mysql> SELECT * FROM t ORDER BY st; mysql> SELECT * FROM t ORDER BY CAST(SUBSTRING(st,LOCATE(' ',st)+1) AS SIGNED);
두 번째 쿼리는 "a 12" 앞에 "a 1"을 배치하여 결과를 올바르게 정렬합니다.
고려 사항
열 패턴이 "WORD space NUMBER"와 다른 경우 다른 해결 방법이 필요할 수 있습니다.
개선 사항
다음 향상된 쿼리 숫자 값으로 문자 접두어를 분리하는 이중 정렬을 추가합니다.
ORDER BY SUBSTRING_INDEX(st, " ", 1) ASC, CAST(SUBSTRING_INDEX(st, " ", -1) AS SIGNED)
이 수정된 코드 조각은 보다 포괄적인 정렬 솔루션을 제공합니다.
위 내용은 SQL에 포함된 숫자를 사용하여 문자열 열을 정렬하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!