2015-01-27 3 views
0

테이블 '특성', '데이터'및 '범주'가 있습니다. 테이블 '특성'에서 나는 dataID와 categoryID를 가지고있다. 모든 데이터를 선택하고 categoryID별로 그룹화하는 쿼리가 있습니다. 내가 좋아하는 그들을 표시해야합니다int의 숫자 문자열

1 
1,2 
3,4 
5,6 
10 
11 

을하지만 난

1 
1,2 
10 
11 
3,4 
5,6 

를 얻을 insted 내가 VARCHAR로 convertet 때문에 그들은 INT에 의해 순서되지 않습니다

select 
CONVERT(nvarchar(50), SUBSTRING((SELECT DISTINCT ',' + convert(varchar(10), [data]) 
     FROM specifics WHERE categoryID = MIN(k.ID) and dataID= $id 
      ), 2, 50)) DATAS 
     from 
      specifics ts join category k on k.ID = ts.categoryID 
     where 
      ts.dataID= $id 
      group by k.ID order by DATAS 

그래서 내 질문은 : 변환하거나 숫자의 문자열을 int로 정렬하고 그 int 값으로 정렬하는 방법?

+0

여전히 관련성이 있습니다 : 어떤 데이터베이스 버전을 사용하고 있습니까? – Abecee

답변

0

nvarchar 열의 일부를 int 형식으로 변환하여 ORDER BY 절에서 사용할 수 있습니다. 아마도 다음과 같을 것입니다 :

ORDER BY CONVERT(int, SUBSTRING(1,1, SUBSTRING((SELECT DISTINCT ',' + convert(varchar(10), [data]))) 
+0

varchar 값 ','을 데이터 유형 int로 변환 할 때 변환이 실패했습니다. – arual