안녕하세요.
아래와 같이 데이터가 존재한다고 가정 합니다.
------------
기억하니A1
기억하니A2
기억하니B1
바보하니A1
기억하니A10
------------
정렬을 시키면
기억하니A1
기억하니A10
기억하니A2
기억하니B1
바보하니A1
이렇게 "기억하니A2" 보다 "기억하니A10" 이 먼저 나오게 됩니다.
아래처럼 가지런히 정렬이 되려면 어떻게 해야 될까요?
기억하니A1
기억하니A2
기억하니A10
기억하니B1
바보하니A1
많은 조언 부탁 드립니다.
답변 5개 / 댓글 6개
저장시킬때 문자열을 정규식으로 치환해서
col1 에는 원본 문자열 그대로
col2 에는 뒤에 숫자를 제외한 문자열만
col3 에는 뒤에 숫자만
이렇게 저장하시고,
꺼내올때 정렬을 order by col2,col3 하면 되요..
저도 먼저 답변 다신분들 처럼 저렇게만 생각했는데...혹시 하고 찾아보니 이런것도 있네요.
https://java119.tistory.com/82
아마 원하시는 방향이 이게 맞으실거 같아요.
https://stackoverflow.com/questions/12097368/mysql-order-by-string-with-numbers
https://bytes.com/topic/mysql/answers/881790-mysql-natural-sort
숫자가 나오는 위치가 고정이라면 쓸 수 있겠네요.
아니면
A1 대신 A01로 저장하세요.
A10 과 A2 는 문자열로 볼때는 A10 이 우선이기 때문입니다.
컬럼을 쪼개어 쓰시면 될것 같습니다.
order by col1,col2
답변에 대한 댓글 2개
답변을 작성하려면 로그인이 필요합니다.