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
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
아마 원하시는 방향이 이게 맞으실거 같아요.
이게 쉬운 문제가 이니였군요 ^^;;;;;