데이터베이스 개발자 질문과 답변 게시판

데이터베이스 개발/운영 관련 질문과 답변을 올리는 게시판입니다. 궁금하신 내용을 이곳에서 문의하시면 SQLER 분들의 답변을 받으실 수 있습니다. 문의를 하실때에는 최근 작업하신 특이 사항이나, 장애 발생 전 상황을 상세히 올려 주시면 답글을 적어주시는 SQLER분들의 답변이 더 정확할 수 있으니 도움 되시길 바랍니다. 쿼리 문의일 경우, 실제 문제가 재현되는 테이블생성, 샘플데이터 생성 쿼리를 함께 올려 주시면 더 빠르고 정확한 쿼리 문의 응답이 가능합니다.

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

cksql 2015.01.30 08:59 Views : 4122

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
8514 쿼리나 프로시저로 테이블의 어느 데이터를 지운 것에 대한 이력 [2] 상남자 2015.02.02 2266
8513 사용자 삭제가 안되서요.ㅠ [1] 더따뜻한 2015.02.02 5022
8512 두개의 테이블에서 날짜별로 금액 합을 계산하는 쿼리 [1] embster 2015.01.31 3702
8511 ApexSQL Refactor 사용시 정렬 오류 [2] 흑흑 2015.01.30 2900
» 정렬하는 쿼리 질문입니다. [11] cksql 2015.01.30 4122
8509 클러스터 인덱스를 datetime 컬럼에 괜찮을까요? [2] jwgye 2015.01.29 3050
8508 ADO, BDE, ODBC 연결 속도 문제... 랜덤의세계 2015.01.29 5063
8507 같은 서버에서 서로 다른 DB 트리거 관련문의ㅜㅜ 홍야홍야 2015.01.29 3365
8506 실제테이블 용량과 MDF 파일 용량 차이 질문드립니다. [2] 빠그도리 2015.01.29 4343
8505 primary key 선정에 있어서 궁금증이 생겨 질문 드립니다. [1] jwgye 2015.01.29 4445
8504 디자이너와 쿼리를 사용한 테이블 변경 차이점 [2] 수야짱 2015.01.28 2765
8503 adhoc 관련 질문입니다. [1] 카루카루 2015.01.28 2234
8502 문자열 검색시 [] 기호는 어떻게 검색해야할까요? [1] 절간신부™ 2015.01.28 2369
8501 mssql2005 32비트 -> 64비트 [2] wassup 2015.01.28 3765
8500 [긴급] DBCC Checkdb에 대한 output [1] 송동운 2015.01.28 2774
8499 조회 시 아무것도 없을 때!!... [3] 마힐링 2015.01.27 2736
8498 전체 텍스트 카달로그 인덱싱된 시간 질문입니다 악동이 2015.01.27 2701
8497 Microsoft.ACE.OLEDB.12.0 오류 질문드립니다. 키리카 2015.01.27 4254
8496 테이블 삭제 쿼리 질문 [1] quiz12 2015.01.26 3050
8495 쿼리 질문입니다. [1] 카루카루 2015.01.26 2376





XE Login