order by 질문 드립니다.

매출이 오르면 내리는 수수료! 지금 수수료센터에서 전자결제(PG)수수료 비교견적 신청해 보세요!
order by 질문 드립니다.

QA

order by 질문 드립니다.

본문

안녕하세요.

 

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

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

기억하니A1

기억하니A2

기억하니B1

바보하니A1

기억하니A10

 

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

 

정렬을 시키면

 

기억하니A1

기억하니A10

기억하니A2

기억하니B1

바보하니A1

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

 

 

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

 

기억하니A1

기억하니A2

기억하니A10

기억하니B1

바보하니A1

 

많은 조언 부탁 드립니다.

 

 

 

 

 

 

이 질문에 댓글 쓰기 :

답변 5

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

 

col1 에는 원본 문자열 그대로

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

col3 에는 뒤에 숫자만  

 

이렇게 저장하시고, 

 

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

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

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

 

order by col1,col2

 

컬럼을 쪼개어 쓴다는거는..
문자와 숫자를 애초에 DB에서 구분해서 저장하라는 말씀인듯 합니다.

문자          숫자
기억하니A  1

기억하니A  2

기억하니B  1

바보하니A  1

기억하니A  10

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

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

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

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

 

아니면

A1 대신 A01로 저장하세요.

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

 

https://java119.tistory.com/82

 

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

답변을 작성하시기 전에 로그인 해주세요.
전체 0
QA 내용 검색
  • 개별 목록 구성 제목 답변작성자조회작성일
  • 질문이 없습니다.

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT