안녕하세요.
버전 넘버 (1.1.1.1) 에 대한 정렬 때문에 질문 드립니다.
아래와 같은 version number 가 있습니다.
가장 최신(lastest version)의 버전을 찾고자 하는데
id | version | filename
--------------------------
1 1.1.3.1 blah_1_1_3_1_dw.zip
2 1.1.4.1 blah_1_1_4_1_dw.zip
3 1.1.12.1 blah_1_1_12_1_dw.zip
max(version) | max(filename)
=> 1.1.4.1 | blah_1_1_4_1_dw.zip
이 나와서
Version 에 대해서는
정렬은 ORDER BY CAST('/'+REPLACE(Version,'.','/') + '/' AS HIERARCHYID) DESC
그룹핑은 (MAX(CAST('/'+REPLACE(A.Version,'.','/') + '/' AS HIERARCHYID)).ToString())
를 통해 해결은 봤는데
문제는 filename입니다.
Version 칼럼 자체는 / /를 통해 replace 되었지만
Filename 칼럼은 파일이름 때문에 치환에 HIERARCHYID 로 변환 할 수가 없더라구요.
뭔가 쉬운 방법이 없을까 하고 고민을 하는데 ㅠㅠ 답이 안나와서... 이렇게 글을 남기게 됩니다.
구글 스승님도 sql version number 이런식으로 검색하면 죄다 SQL 서버 버전 이야기나 하고 있어서 ㅠㅠㅠㅠ
무슨 방법이 없을까요? -_-a
흠... .이건 함수 하나 만드셔야 하지 않을까요?
저도 사내 ERP의 배포 솔루션을 만들면서 버전 문제를 좀 겪었는데요.
1.2와 1.12 둘중에 어떤게 높은 버전이냐의 문제였습니다.
1.12는 1.1의 마이너패치라는 의견과 12번째 빌드 버전이라는 의견이 있어서...
게다가 프로그램에 따라 달리 해석하는 일도 있고 해서요.
근데 일단 1.12가 더 최신 버전이라 가정을 하니 문자열 비교에서는 1.2가 더 우선하는 문제가 있더군요.
그래서 "."으로 SPLIT한 다음 각각에 "0"을 앞에 붙여서 10자리로 만든 후 비교했습니다.