2011-07-01 6 views
0

특별 부르는 것들은를 갖는 열을 정렬하면 나는 열 Name NVARCHAR(100)있는 테이블을 가지고있다.SQL 서버 2008

Wang 
Bergeron 
Zhang 
Sorrentino 
Mazumdar 
Boggs 
Fricker 
Barkwell 
Atkinson 
Mah 
Test CB1 C1*(
--Test Contact-- 
--TEST CONTACT-- 
--ABC CONTACT-- 
Retest Contact 
Janzen 
Seto 
Boggs 
Fricker 
Barkwell 

나는

--ABC CONTACT-- 
--Test Contact-- 
--TEST CONTACT-- 
Atkinson 
Barkwell 
Barkwell 
Bergeron 
Boggs 
Boggs 
Fricker 
Fricker 
Janzen 
Mah 
Mazumdar 
Retest Contact 
Seto 
Sorrentino 
Test CB1 C1*(
Wang 
Zhang 

요청이 정렬

+0

문자열 열의 단어를 다시 정렬 하시겠습니까? 데이터베이스에서 수정해야하거나 코드를 사용해야합니까? - 편집 - @ Tim의 편집 이후 질문이 더 의미가 있습니다. – asawyer

+2

ORDER BY NAME을 (를) 사용해 보셨습니까? – heximal

+0

@heximal : 'ORDER BY NAME'은 원하는 결과를 내지는 못하지만 : '1 .-- ABC CONTACT--, ......, 17 .-- 시험 접촉 -, 18 .-- 시험 접촉 -, ... '. OP는'--'로 시작하여 알파벳순으로 된 모든 이름을 원합니다. [내 샘플 데이터] (http://stackoverflow.com/questions/6548481/sorting-a-column-having-special-charaters-in-sql-server-2008/6548637#6548637)를 확인하십시오. –

답변

1

를 다시 해결하기 위해 당신의 친절한 지원처럼되고 결과를 기대하고있다 :

테이블의 데이터는 다음과 같습니다

SELECT * 
FROM myTable 
ORDER BY CASE WHEN Name LIKE '-%' THEN 1 ELSE 0 END DESC, 
     Name ASC 
: 아마 주문 절에 case 문
2

당신은 당신의 Order ByCase-Statement를 사용할 수 있습니다.

declare @temp table(
    Name varchar(100) 
) 
insert into @temp 
    SELECT * FROM (SELECT 'Wang' UNION ALL SELECT 'Bergeron' UNION ALL SELECT 'Zhang' UNION ALL SELECT 'Sorrentino' UNION ALL SELECT 'Mazumdar' UNION ALL SELECT 'Boggs' UNION ALL SELECT 'Fricker' UNION ALL SELECT 'Barkwell' UNION ALL SELECT 'Atkinson' UNION ALL SELECT 'Mah' UNION ALL SELECT 'Test CB1 C1*(' UNION ALL SELECT '--Test Contact--' UNION ALL SELECT '--TEST CONTACT--' UNION ALL SELECT '--ABC CONTACT--' UNION ALL SELECT 'Retest Contact' UNION ALL SELECT 'Janzen' UNION ALL SELECT 'Seto' UNION ALL SELECT 'Boggs' UNION ALL SELECT 'Fricker' UNION ALL SELECT 'Barkwell')AS T(Spalte); 

select * from @temp 
    ORDER BY (CASE WHEN [Name] LIKE '-%' THEN 0 ELSE 1 END), [Name]