Сортировка столбца, имеющего специальные символы в SQL Server 2008 - PullRequest
0 голосов
/ 01 июля 2011

У меня есть таблица с колонкой Name NVARCHAR(100).

Данные в таблице выглядят так:

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

Запросите любезную поддержку для повторного решения этой сортировки

Ответы [ 2 ]

2 голосов
/ 01 июля 2011

Вы можете использовать Case-Statement в вашем Order By.

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]
1 голос
/ 01 июля 2011

Может быть с оператором case в предложении order:

SELECT *
FROM myTable
ORDER BY CASE WHEN Name LIKE '-%' THEN 1 ELSE 0 END DESC,
         Name ASC
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...