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

order by 질문 드립니다. 채택완료

오늘도산다 4년 전 조회 2,098

안녕하세요.

 

아래와 같이 데이터가 존재한다고 가정 합니다.

------------

기억하니A1

기억하니A2

기억하니B1

바보하니A1

기억하니A10

 

------------

 

정렬을 시키면

 

기억하니A1

기억하니A10

기억하니A2

기억하니B1

바보하니A1

이렇게 "기억하니A2" 보다 "기억하니A10" 이 먼저 나오게 됩니다.

 

 

아래처럼 가지런히 정렬이 되려면 어떻게 해야 될까요?

 

기억하니A1

기억하니A2

기억하니A10

기억하니B1

바보하니A1

 

많은 조언 부탁 드립니다.

 

 

 

 

 

 

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

답변 5개

채택된 답변
+20 포인트
식쏭
4년 전

저장시킬때 문자열을 정규식으로 치환해서 

 

col1 에는 원본 문자열 그대로

col2 에는 뒤에 숫자를 제외한 문자열만

col3 에는 뒤에 숫자만  

 

이렇게 저장하시고, 

 

꺼내올때 정렬을 order by col2,col3 하면 되요..

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

답변에 대한 댓글 1개

오늘도산다
4년 전
많은 도움을 주셔서 감사합니다!

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

오늘도산다

이게 쉬운 문제가 이니였군요 ^^;;;;;

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

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

저도 먼저 답변 다신분들 처럼 저렇게만 생각했는데...혹시 하고 찾아보니 이런것도 있네요.

 

https://java119.tistory.com/82

 

아마 원하시는 방향이 이게 맞으실거 같아요.

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

답변에 대한 댓글 1개

오늘도산다
4년 전
안려주셔서 감사합니다!
규직척인 문자가 동일하게 포함되었을때 가능한 방법 같습니다.
감사합니다~!

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

https://stackoverflow.com/questions/12097368/mysql-order-by-string-with-numbers

https://bytes.com/topic/mysql/answers/881790-mysql-natural-sort

숫자가 나오는 위치가 고정이라면 쓸 수 있겠네요.

 

아니면

A1 대신 A01로 저장하세요.

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

답변에 대한 댓글 2개

오늘도산다
4년 전
설명 감사 드립니다.
입력 값에는 규칙이 없는 상황입니다. 입력값 규칙이 없는 상태에서 정렬이 가능할까 궁금합니다.
엑스엠엘
4년 전
규칙이 없다면
숫자 자릿수를 일정하게 0으로 앞 부분은 채워야 합니다.
아니면 컬럼을 분리하던게 해야죠.

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

식쏭
4년 전

A10 과 A2 는 문자열로 볼때는 A10 이 우선이기 때문입니다. 

컬럼을 쪼개어 쓰시면 될것 같습니다.

 

order by col1,col2

 

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

답변에 대한 댓글 2개

오늘도산다
4년 전
컬럼을 쪼개어 쓴다는 뜻이 무슨뜻인지 이해를 못하고 있습니다. 조금만 더 알려주실 수 있나요~?
하이바네
4년 전
컬럼을 쪼개어 쓴다는거는..
문자와 숫자를 애초에 DB에서 구분해서 저장하라는 말씀인듯 합니다.

문자 숫자
기억하니A 1

기억하니A 2

기억하니B 1

바보하니A 1

기억하니A 10

이렇게 나눠버리면 그냥 간단하게 order by에서 문자 숫자 둘 다 적용하면 되니깐요

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

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

로그인