테스트 사이트 - 개발 중인 베타 버전입니다

오라클 숫자와 문자 데이터 정렬 질문입니다. 채택완료

스니음 2년 전 조회 2,216

SELECT * test_tb order by CODE_NM

 

이렇게 쿼리를 했을때 

 

1.칼
10.방패 
11.자동차
12.호랑이
2.집
3.컴퓨터 
4.의자
5.책상
6.가방
7.인벤
8.연필
9.볼펜

 

이렇게 정렬이 되업버립니다. 이걸

1.칼
2.집
3.컴퓨터 
4.의자
5.책상
6.가방
7.인벤
8.연필
9.볼펜

10.방패 
11.자동차
12.호랑이

 

이렇게 정렬을 하려면 어떻게 해야 하나요?

댓글을 작성하려면 로그인이 필요합니다.

답변 2개

채택된 답변
+20 포인트
그누위즈

원하는 순서로 데이터를 정렬하려면 Oracle 데이터베이스에서 다음 SQL 쿼리를 사용할 수 있습니다.

SELECT * test_tb에서 ORDER BY TO_NUMBER(REGEXP_SUBSTR(CODE_NM, '^\d+')), CODE_NM;

이 쿼리는 먼저 정규식을 사용하여 CODE_NM 열에서 선행 숫자를 추출하고 TO_NUMBER 함수를 사용하여 숫자로 변환한 다음 먼저 이 숫자를 기준으로 행을 정렬한 다음 원래 CODE_NM 값을 기준으로 행을 정렬합니다.

 

그게아니라면, 해당 code_nm 필드의 데이터타입이 int가 맞는지 확인도 해보시기바랍니다.

만약 int가 아니라면 int로 변경도 해보세요.

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

스니음
2년 전
오~ 됩니다. 감사합니다. ^^

댓글을 작성하려면 로그인이 필요합니다.

플라이
2년 전

번호된 부분을 같은 컬럼으로 하지 마시고 번호만 별도로 컬럼의 형식을 int로 형식으로 적용하셔서 정렬하셔야 원하시는 방식으로 정렬이 가능합니다.

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

스니음
2년 전
db에 12.호랑이 이런식으로 varchar2 로 되어 있습니다.

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인