숫자가 포함된 문자열 정렬 쿼리 질문드려요 0 5 1,130

by 싱싱 [SQL Query] sql 문자형숫자 [2020.09.21 17:14:21]


 

1 CB1-1
2 CB1-2
3 CB2-10
4 CB2-2
5 CB2-5
6 CB3-5

데이터 형식은 'C' + 층 + '-' + 숫자 입니다

먼저 층으로 정렬 한 후에 숫자가 정렬되었으면 좋겠는데

층으로는 정렬되었지만 숫자가 뒤죽박죽이네요

정렬할 수 있는 방법이 따로 있을까요?ㅠㅠ 

 

by pajama [2020.09.21 17:24:45]

층의 형식이 어떻게 되는지에 따라 달라질 것 같네요.

with t as (
select 'CB1-1' v1 from dual
union all select 'CB1-2' v1 from dual
union all select 'CB2-10' v1 from dual
union all select 'CB2-2' v1 from dual
union all select 'CB2-5' v1 from dual
union all select 'CB3-5' v1 from dual
) 
select v1 from t
order by substr(v1,3,1), cast(regexp_replace(v1,'CB[1-9]-','') as int)

 


by 싱싱 [2020.09.21 17:52:34]

적용해보니 잘 나오네요!!! 감사합니다 !!!


by 마농 [2020.09.21 17:37:27]

B1,B2 는 지하층인가요?
층은 지하만 있나요? 지상층은 없나요? 지상층이 있다면 어떻게 표현이 되나요?
지하, 지상을 함께 정렬한다면 어떤 결과가 나와야 될까요?


by 싱싱 [2020.09.21 17:51:01]

넵 B1, B2는 지하층으로 지상층이 있을경우 1F의 형식으로 표기합니다.

지상층보다는 지하층의 정렬이 필요합니다 ㅠㅠㅠ


by 마농 [2020.09.21 17:59:30]

지하층만 따로 뽑아 정렬하는 건가요?
지상층도 함께 정렬한다면 기준이 명확해야 할텐데요?
특히나 지상층은 10층 이상이 있을 수 있구요.

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입