2015-01-27 2 views
0

선택 순서에 문제가 있으며 수정 방법을 모르겠습니다.T SQL - 계층 구조에 대한 특별 주문

계층 구조는 다음과 같아야합니다

10 
100 
1001 
1003 
1004 
1007 
10010 
20 
210 
2101 
220 
22100 
22101 

을하지만이 계층 구조에 의해 일반적인 순서를 수행 할 때 나는 그런 식으로 그것을 얻을 : 사람이 내가 얻을 수있는 방법을 생각을 가지고 있습니까

10 
20 
100 
210 
220 
1001 
... 

올바른 순서?

+3

그것을 가지고 열 데이터 유형은 무엇입니까? –

+0

그들은 모두 INT입니다 – denzel

답변

1

귀하의 컬럼은 숫자 데이터 유형입니다. 조금 @juegend 에서 답을 훔친 I이

select * from your_table 
order by cast(your_column as varchar(20)) 
+0

아니요, 그들은 alredy INT입니다. 그것이 순서가 10, 100, 1001, (...), 20,210 대신에 10, 20, 100이되는 이유입니다. – denzel

+0

다른 방법으로 얻었습니다. Fixed now –

1

같은 문자열로 변환 그는 기록했지만 일부 VARCHAR

SELECT * 
FROM Table 
ORDER BY CAST(ID AS VARCHAR) 
+0

더 좋아 보이지만 여전히 해결책은 아닙니다. 1003, 1004 등 전에 10010을 얻는 것처럼 맨 앞에 0이 필요하다고 생각합니다. – denzel

1

확인을 캐스팅해야

SELECT * 
FROM Table 
ORDER BY RIGHT('00000000' + CAST(ID AS VARCHAR),8) 
관련 문제