programing

마지막 3자리 순서로 주문

muds 2023. 8. 14. 23:09
반응형

마지막 3자리 순서로 주문

다음과 같은 테이블이 있습니다.

id  name
--------
1   clark_009
2   clark_012
3   johny_002
4   johny_010

다음 순서로 결과를 얻어야 합니다.

johny_002
clark_009
johny_010
clark_012

이미 시도한 것을 묻지 마십시오. 어떻게 해야 할지 모르겠습니다.

이렇게 하면 가장 오른쪽에 있는 세 개의 문자를 선택하고 해당 값을 오름차순으로 정렬하기만 하면 됩니다.

SELECT *
FROM table_name
ORDER BY RIGHT(name, 3) ASC;

데이터가 증가함에 따라 이는 비효율적인 솔루션이 될 것이라는 점도 덧붙여야 합니다.최종적으로 숫자 부록을 별도의 인덱스 정수 열에 저장하여 정렬을 최적으로 효율적으로 수행할 수 있습니다.

당신은 이것을 먹어봐야 합니다.

SELECT * FROM Table order by SUBSTRING(name, -3);

행운을 빕니다.

MySQL을 사용할 수 있습니다.SUBSTRING()하위 문자열로 정렬하는 기능

구문: SUBSTRING(string,position,length)

예: 문자열의 마지막 3자를 기준으로 정렬

SELECT * FROM TableName ORDER BY SUBSTRING(FieldName, -3);
#OR
SELECT * FROM TableName ORDER BY SUBSTRING(FieldName, -3,3);

예: 문자열의 처음 3자를 기준으로 정렬

SELECT * FROM TableName ORDER BY SUBSTRING(FieldName, 1,3);

참고: Positive왼쪽에서 오른쪽으로 시작하는 위치/색인Negative위치/색인은 문자열의 오른쪽에서 왼쪽으로 시작합니다.

SUBSTRING() 기능에 대한 자세한 내용은 다음과 같습니다.

substring_index 함수를 적용하여 다음 값을 구문 분석할 수 있습니다.

select * from table order by substring_index(name, '_', -1)

이름 길이가 가변적인 마지막 세 글자(왼쪽에서 오른쪽)로 정렬하려면 다음을 제안합니다.

SELECT *
FROM TABLE
ORDER BY SUBSTRING (name, LEN(name)-2, 3)

인덱스는 세 번째 마지막 문자인 이름 -2에서 시작합니다.

조금 늦었지만 방금 같은 문제가 생겨서 도움이 되었습니다.

언급URL : https://stackoverflow.com/questions/13732026/order-by-last-3-chars

반응형