2012-02-06 4 views
2

MyCode라는 열에 "11 (공백)", "109", "X (공백)", "9 (공백) (공백)", "15 즉 varchar (3)입니다.어떻게 TSQL의 오른쪽에 varchar 필드를 정렬 할 수 있습니까?

나는 ASC 순서대로 주문할 때 109와 같이 prolbme 11을 표시합니다.

나는 순서가 될 것이다 그래야 앞에 빈 문자를 추가하여 오른쪽에있는 값을 정렬 할 :

" 11" 

.. 

"109" 

질문 : 나는을 MyTable에서 내 SELECT 문장은 MyChar을 쓸 수있는 방법 "그 값에 대한 그래서 1 (공백) (공백) "(공백) 1"등을 반환해야합니까?


@gbn : 당신의 대답은 무엇을했는지 내가 필요하지만 출력 didnt 한 변화 :

enter image description here

+0

숫자를 텍스트로 저장하면 전송하지 않으면 텍스트로 정렬됩니다. –

답변

2

를 사용하여 고정 길이

SELECT RIGHT(
     SPACE(5) + 
     REPLACE(REPLACE(REPLACE(REPLACE(RTRIM(MyChar), CHAR(160), ''), CHAR(9), ''), CHAR(10), ''), CHAR(13), '') 
    , 5) AS Justified 
FROM MyTable 
ORDER BY Justified 

에 선행 공백이 항상 패드 5 중 하나를 변경하면 모두 변경해야합니다.

편집 : 추가 하드 공간 + 기타 비 인쇄 탐지

이것이 당신을 줄 않습니다 RTRIM

편집이 추가?

SELECT ASCII(RIGHT(MyChar, 1) FROM MyTable 
+0

"11"대신 "11"을 만듭니다. 따라서 주문 문제를 해결하는 데 도움이되지 않습니다. – pencilCake

+0

@pencilCake : added RTRIM – gbn

+0

실제 공간 또는 "하드 공간"입니까? (문자 160) – gbn

관련 문제