Я узнал что-то новое, так же, как и вы
Я считаю, что разница между " Сортировка строк " и " Сортировка слов " (игнорирует дефис)
Пример разницы между сортировкой WORD и STRING
http://andrusdevelopment.blogspot.com/2007/10/string-sort-vs-word-sort-in-net.html
от Microsoft
http://support.microsoft.com/kb/322112
Например, если вы используете SQL
сличение
«SQL_Latin1_General_CP1_CI_AS»,
не-Unicode строка 'a-c' меньше чем
строка «ab», потому что дефис
("-") сортируется как отдельный
символ, который предшествует "б".
Однако, если вы конвертируете эти строки
Unicode и вы делаете то же самое
сравнение, строка Unicode N'a-c '
считается больше, чем N'ab '
потому что правила сортировки Unicode используют
«сортировка слов», которая игнорирует дефис.
Я сделал пример кода
вы также можете поиграть с COLLATE, чтобы найти тот, который будет работать с вашей сортировкой
DECLARE @test TABLE
(string VARCHAR(50))
INSERT INTO @test SELECT 'co-op'
INSERT INTO @test SELECT 'co op'
INSERT INTO @test SELECT 'co_op'
SELECT * FROM @test ORDER BY string --COLLATE SQL_Latin1_General_Cp1_CI_AS
--co op
--co-op
--co_op
SELECT * FROM @test ORDER BY CAST(string AS NVARCHAR(50)) --COLLATE SQL_Latin1_General_Cp1_CI_AS
--co op
--co_op
--co-op