Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Где прочитать про детали сортировки разных collation?  [new]
Collation sort
Guest
Наткнулся тут на ситуацию, в которой понял, что что-то я недопонимаю про принципы сортировки у разных collation:
;with cte as (
  select 'Д' s
  union all
  select '-лhjgkhk'
  union all
  select 'О'
)
select * from cte
order by s collate Cyrillic_General_CI_AS

выдает такой порядок:

Д
-лhjgkhk
О

а с
order by s collate SQL_Latin1_General_CP1251_CI_AS

такой:

-лhjgkhk
Д
О

- я до сего момента считал, что порядок в обоих случаях должен быть таким, какой он во втором случае. Поэтому хотелось бы поподробнее узнать о правилах сортировки в Cyrillic_General_CI_AS и SQL_Latin1_General_CP1251_CI_AS (и найти 10 отличий). Спасибо.
8 сен 14, 16:14    [16550659]     Ответить | Цитировать Сообщить модератору
 Re: Где прочитать про детали сортировки разных collation?  [new]
Maxx
Member [скрыт]

Откуда:
Сообщений: 24290
наберите свой вопрос в поиске по форуму- обсуждалось мульон раз с примерами и ссылкаме
8 сен 14, 16:15    [16550665]     Ответить | Цитировать Сообщить модератору
 Re: Где прочитать про детали сортировки разных collation?  [new]
a_voronin
Member

Откуда: Москва
Сообщений: 4807
Maxx
наберите свой вопрос в поиске по форуму- обсуждалось мульон раз с примерами и ссылкаме


http://msdn.microsoft.com/en-us/library/ms144250(v=sql.105).aspx

Нужно выучить 4 аббревиатуры

CI -- case insensitive
CS -- case sensitive
AI -- accent Insesitive
AS -- accent Sesitive
8 сен 14, 16:17    [16550690]     Ответить | Цитировать Сообщить модератору
 Re: Где прочитать про детали сортировки разных collation?  [new]
Maxx
Member [скрыт]

Откуда:
Сообщений: 24290
a_voronin,

а я вроде отвечал,а не спрашивал
8 сен 14, 16:21    [16550714]     Ответить | Цитировать Сообщить модератору
 Re: Где прочитать про детали сортировки разных collation?  [new]
a_voronin
Member

Откуда: Москва
Сообщений: 4807
Maxx
a_voronin,

а я вроде отвечал,а не спрашивал


А я ответил на ваш ответ
8 сен 14, 16:49    [16550911]     Ответить | Цитировать Сообщить модератору
 Re: Где прочитать про детали сортировки разных collation?  [new]
Collation sort
Guest
a_voronin
Нужно выучить 4 аббревиатуры

CI -- case insensitive
CS -- case sensitive
AI -- accent Insesitive
AS -- accent Sesitive

Да, спасибо, я эти аббревиатуры знаю, только в моем примере обе collation - CI_AS. Здесь, видимо, дело в другом - порывшись в поиске, нашел ссылку на collation-charts.org, и там для Cyrillic_General_CI_AS увидел, что символ "-" (дефис) при сортировке игнорируется - ну, а остальные символы согласно таблице весов для локали и в соответствии с CI_AS. Жаль, на этом сайте нет параметров сортировки для SQL_Latin1_General_CP1251_CI_AS - остается только догадываться, что в ней символ дефиса при сортировке учитывается.
8 сен 14, 17:19    [16551063]     Ответить | Цитировать Сообщить модератору
 Re: Где прочитать про детали сортировки разных collation?  [new]
o-o
Guest
Collation sort
дело в другом - порывшись в поиске, нашел ссылку на collation-charts.org, и там для Cyrillic_General_CI_AS увидел, что символ "-" (дефис) при сортировке игнорируется - ну, а остальные символы согласно таблице весов для локали и в соответствии с CI_AS. Жаль, на этом сайте нет параметров сортировки для SQL_Latin1_General_CP1251_CI_AS - остается только догадываться, что в ней символ дефиса при сортировке учитывается.


вот-вот.
все дело в дефисе и разном отношении к нему коллэйшенов групп Windows и SQL Server.
виндовские его игнорируют, а древние SQL Server-ные учитывают.
(Cyrillic_General_CI_AS из группы виндовых, а SQL_Latin1_General_CP1251_CI_AS -- из SQL Server-ных коллейшенов)
проблему можно обойти, используя юникод.
какой бы коллэйшн вы ни указали ему при сортировке будут применены виндовские правила,
т.е. дефис пролетит.
попробуйте:
;with cte as (
  select N'Д' s
  union all
  select '-лhjgkhk'
  union all
  select 'О'
)
select * from cte
order by s collate SQL_Latin1_General_CP1251_CI_AS
8 сен 14, 17:50    [16551237]     Ответить | Цитировать Сообщить модератору
 Re: Где прочитать про детали сортировки разных collation?  [new]
a_voronin
Member

Откуда: Москва
Сообщений: 4807
o-o
проблему можно обойти, используя юникод.


Этого вам не достаточно ?

CAST (... AS NVARCHAR(...)) и дело в шляпе
8 сен 14, 18:05    [16551315]     Ответить | Цитировать Сообщить модератору
 Re: Где прочитать про детали сортировки разных collation?  [new]
o-o
Guest
a_voronin,
шляпник вы мой дорогой, да, именно мне -- недостаточно.
...а вы правда в жизни не видели некириллических баз?

К сообщению приложен файл. Размер - 56Kb
8 сен 14, 18:12    [16551357]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить