정렬하는 쿼리 질문입니다.

cksql 2015.01.30 08:59 Views : 4137

table1에는 파일명과 그파일의 파일버전이 입력되어 있습니다.
   table1
name    version
a       5.1.235.0
a       5.1.235.1
b       5.3.254.1
b       5.3.254
c       5.2.1
d       4.235.1.1
이런식으로 되어있습니다.
지금 각 파일명마다 version을 최신순으로 정렬시켜야 하는데 데이터타입이 nchar여서 그대로 정렬시키면 
문자로 정렬을 시켜버립니다. 그래서 '.'을 기준으로 각각의 숫자를 비교하려고 합니다.
그래서 아래와 같은 방식으로 정렬을 시키려고 했는데
문제는 각 version들이 '.'의 개수도 다르고 '.'이 언제 또 생길지 모른다는 점과 마지막엔 '.'없어서
마지막 숫자를 어디까지 자를 것인지 기준이 없어져 버립니다.
또 '.'이 길어질수록 쿼리를 생각해내기가 너무 복잡해져버립니다.
혹시 정렬 시킬 수 있는 다른 방법이나 있을까요...? 다른 방법이 없어서 아래 쿼리와 같이
쓸수밖에 없다면.. '.'개수가 다른건 어떻게 해결하고 마지막 숫자는 어떻게 잘라내서 비교를 해야 할까요...
select name
     , version, 
     --첫문자부터 처음나오는 '.'전까지
     , cast(SUBSTRINGversion, 1, CHARINDEX('.', version)-1) as int) as 첫번째
     --처음 나오는 '.' 다음 숫자부터 두번째 나오는 '.' 전 숫자까지 자르기
     , cast(substring(version, CHARINDEX('.', version)+1, (charindex('.', version, charindex('.', version)+1)) - (CHARINDEX('.', version)+1)) as int) as 두번째
from table1
order by 첫번째 desc, 두번째 desc

No. Subject Author Date Views
Notice 2023년 1월 - SQLER의 업데이트 강좌 리스트 코난(김대우) 2023.01.02 480
8529 점검 부탁드립니다. [1] 예진예랑 2015.02.07 2968
8528 SQL JOB 관련해서 질문드립니다. [1] 나는짱이야 2015.02.07 2688
8527 같은 형식의 테이블 합치는 것에 질문인데요 [2] 짬자면굿 2015.02.06 2574
8526 여러 컬럼 중에서 하나라도 값이 있는 경우를 골라내고 싶을 때 [4] 더따뜻한 2015.02.05 4491
8525 엑셀 암호가 걸려있는 상태에서 SELECT 할 수 있는 방법이 있습니까? [2] 양아치베이비 2015.02.05 3345
8524 행을 두개의 열로 바꾸는것?? [4] 클리티에 2015.02.05 3964
8523 접속 오류 - 연결 문자열이 잘못되었습니다 [1] 생초보 2015.02.04 5315
8522 Z governance라는 라이선스에 대한 정보를 얻을 수 있을까요? 운치 2015.02.04 2293
8521 두개의 테이블을 JOIN할 때 질문입니다. [2] 사이드사이드 2015.02.03 2981
8520 Telnet 연결은 되는데 UDL 파일 만들어서 하려고 하면 연결이 안되는 이유 망토가좋아 2015.02.03 3045
8519 누적합계 쿼리 질문입니다. [6] 깨비꼬비 2015.02.03 11036
8518 SQL프로파일러 질문 드립니다. [1] akfflr 2015.02.03 2700
8517 CURSOR 문에서 USE DATABASE 가 잘 안먹어요. ㅠ [4] 더따뜻한 2015.02.03 2675
8516 trigger를 이용하여 프로시저의 로그 이벤트 남기는 중에... [1] 더따뜻한 2015.02.02 2647
8515 GRANT VIEW SERVER STATE TO [사용자명] 관련 [1] 더따뜻한 2015.02.02 2920
8514 쿼리나 프로시저로 테이블의 어느 데이터를 지운 것에 대한 이력 [2] 상남자 2015.02.02 2276
8513 사용자 삭제가 안되서요.ㅠ [1] 더따뜻한 2015.02.02 5031
8512 두개의 테이블에서 날짜별로 금액 합을 계산하는 쿼리 [1] embster 2015.01.31 3717
8511 ApexSQL Refactor 사용시 정렬 오류 [2] 흑흑 2015.01.30 2912
» 정렬하는 쿼리 질문입니다. [11] cksql 2015.01.30 4137





XE Login