order by 질문 드립니다.

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 | RSS
QA 내용 검색
  • 개별 목록 구성 제목 답변작성자조회작성일
  • 질문이 없습니다.

회원로그인

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