문자형으로 된 사이즈(size) 컬럼을 숫자형으로 정렬하고싶습니다. 1 12 1,691

by 감사 [SQL Query] [2015.04.10 10:31:50]


크기를 나타내는 사이즈가 문자형으로 되어있어서 문자형정렬이 됩니다.

 숫자형정렬로 하고 싶습니다. to_number를 이용해야하는 것 같은데 컬럼별로 숫자형정렬이

잘 안됩니다.

by 감사 [2015.04.10 10:35:17]

한 개의 컬림을 replace 하는 것이 아니라 컬럼별 전체를 숫자형으로 정렬하고싶습니다.


by 아발란체 [2015.04.10 10:50:42]

ORDER BY TO_NUMBER(A), TO_NUMBER(B).....

그리 효과적인 방법은 아닌 것 같습니다.

TO_NUMBER로 전부 바뀔 수 있는 속성이고 숫자로 쓰이는 속성이라면,

숫자형으로 변경하는 것이 어떨까 합니다.

 


by 감사 [2015.04.10 10:53:00]

제가 이런 방법으로 ORDER BY 를 적용해도 수치가 안 맞다고 나옵니다.ㅠㅠ


by rain748 [2015.04.10 10:56:47]

컬럼에 숫자말고 문자도 있는거 같은데요


by 감사 [2015.04.10 10:59:36]

네 맞습니다.


by DarkBee [2015.04.10 11:02:29]

문자가 포함되어있는데 어떻게 숫자로 정렬을 한다는건지.. 말이 안 맞네요


by 감사 [2015.04.10 11:06:19]

문자,숫자가 포함되어있는 사이즈 S,M,L,10,17,100 을 정렬시

10,100,17 (문자형) 으로 정렬되는 것을

문자는 문자형으로

숫자는 숫자형(10,17,100)으로 정렬하고 싶다는말입니다.


by 마농 [2015.04.10 11:30:07]

ORDER BY REGEXP_SUBSTR(size, '[0-9]+')


by 감사 [2015.04.10 11:35:27]

마농님 적용해봤는데 문자형정렬이 됩니다.ㅜㅜ


by 마농 [2015.04.10 13:00:45]

아...타입 변경을 빼먹었네요.

ORDER BY TO_NUMBER(REGEXP_SUBSTR(size, '[0-9]+'))


by 제로 [2015.04.10 11:34:55]
with t(sorting) as
(select 'S' from dual union all
 select 'M' from dual union all
 select 'L' from dual union all
 select '17' from dual union all
 select '10' from dual union all
 select '100' from dual
)
select sorting
from t 
order by decode(regexp_instr(sorting, '[A-Z|a-z]'), 0, to_number(sorting)), sorting
;

 


by 감사 [2015.04.10 11:37:12]

제로님 해결되었습니다. 정말 감사합니다.

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