Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Помогите разобраться, почему строки сортируются именно так  [new]
Вопрос2015
Guest
declare @table table (orderBy varchar(255))
insert into @table(orderBy)
select
	'-'
union all
select
	' <'
union all
select
	'в'


select
*
from @table
order by
	orderBy

delete from @table
insert into @table(orderBy)
select
	'-<'
union all
select
	' <'
union all
select
	'в'


select
*
from @table
order by
	orderBy



В первом случае получаем первой строкой "-", во втором случае первой строкой получаем " <", почему проблем не первой строкой в первом случае???
25 дек 15, 14:03    [18609374]     Ответить | Цитировать Сообщить модератору
 Re: Помогите разобраться, почему строки сортируются именно так  [new]
Maxx
Member [скрыт]

Откуда:
Сообщений: 24290
вбивайте в посик по форуму слово Collation и сравнение символьных полей.... и найдете ответ
25 дек 15, 14:07    [18609390]     Ответить | Цитировать Сообщить модератору
 Re: Помогите разобраться, почему строки сортируются именно так  [new]
iap
Member

Откуда: Москва
Сообщений: 47001
Похожая тема: https://www.sql.ru/forum/1036763/gluk-pri-sravnenii-strok
25 дек 15, 15:59    [18610063]     Ответить | Цитировать Сообщить модератору
 Re: Помогите разобраться, почему строки сортируются именно так  [new]
Mairos
Member

Откуда:
Сообщений: 555
Вопрос2015, потому, что у вас во втором случае не "<", а " <". Пробел впереди, а он по ASCI кодам идёт раньше.
28 дек 15, 12:27    [18617708]     Ответить | Цитировать Сообщить модератору
 Re: Помогите разобраться, почему строки сортируются именно так  [new]
Oleksii Kovalov
Member

Откуда:
Сообщений: 100
https://support.microsoft.com/en-us/kb/322112

автор
For example, if you are using the SQL collation "SQL_Latin1_General_CP1_CI_AS", the non-Unicode string 'a-c' is less than the string 'ab' because the hyphen ("-") is sorted as a separate character that comes before "b". However, if you convert these strings to Unicode and you perform the same comparison, the Unicode string N'a-c' is considered to be greater than N'ab' because the Unicode sorting rules use a "word sort" that ignores the hyphen.
28 дек 15, 12:30    [18617717]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить