Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Учет пробелов при сортировке  [new]
Идеальный кот
Member

Откуда:
Сообщений: 1231
редко приходится иметь дело с SQL Server, поэтому звиняйте заранее за наивный вопрос. Наткнулся на фичу, которая в оракле выглядит по-другому (ПМСМ правильно): пробелы игнорируются при сортировке. Пример (dual конечно сам создал)

Select '990944',1 from dual
union
Select '990944 ',2 from dual
union
Select '990944',3 from dual
order by 1,2

результат:

COLUMN1   COLUMN2  
--------------
990944     1  
990944     2  
990944     3  


можно это настройками изменить - или так всегда происходит?
11 фев 16, 16:32    [18804995]     Ответить | Цитировать Сообщить модератору
 Re: Учет пробелов при сортировке  [new]
iap
Member

Откуда: Москва
Сообщений: 47144
Идеальный кот,

так всегда происходит. Хвостовые пробелы не учитываются. By design!
Исключение - шаблон для LIKE
11 фев 16, 16:36    [18805016]     Ответить | Цитировать Сообщить модератору
 Re: Учет пробелов при сортировке  [new]
iap
Member

Откуда: Москва
Сообщений: 47144
Однако, можно в конец всем строкам добавить какой-нибудь непробельный символ.
11 фев 16, 16:39    [18805030]     Ответить | Цитировать Сообщить модератору
 Re: Учет пробелов при сортировке  [new]
Идеальный кот
Member

Откуда:
Сообщений: 1231
iap
Идеальный кот,

так всегда происходит. Хвостовые пробелы не учитываются. By design!
Исключение - шаблон для LIKE


спасибо!
да уж дизайн - нет слов. Ну, придется с этим как-то жить...
11 фев 16, 16:40    [18805035]     Ответить | Цитировать Сообщить модератору
 Re: Учет пробелов при сортировке  [new]
WarAnt
Member

Откуда: Питер
Сообщений: 2423
Идеальный кот,

select * from 
(values ('990944' ,1), ('990944 ',2 ), ('990944', 3 )) t(a, b)
order by convert(varbinary(100), a) ,2
11 фев 16, 16:42    [18805042]     Ответить | Цитировать Сообщить модератору
 Re: Учет пробелов при сортировке  [new]
invm
Member

Откуда: Москва
Сообщений: 9838
Идеальный кот
да уж дизайн - нет слов
Дизайн следует стандарту - INF: How SQL Server Compares Strings with Trailing Spaces
Идеальный кот
Ну, придется с этим как-то жить...
Придется.
select * from
(
 select '990944',1
 union all
 select '990944 ',2
 union all
 select '990944',3
) t(a, b)
order by
 a, datalength(a), b;
11 фев 16, 17:05    [18805172]     Ответить | Цитировать Сообщить модератору
 Re: Учет пробелов при сортировке  [new]
Идеальный кот
Member

Откуда:
Сообщений: 1231
invm
Идеальный кот
да уж дизайн - нет слов
Дизайн следует стандарту - INF: How SQL Server Compares Strings with Trailing Spaces


спасибо за ссылку! Неожиданно... мне казалось, что решение у оракла более логичное - пробел в конце концов буква не лучше и не хуже любой другой. Ораклоиды ведь тоже стандарты читают - может все упирается в семантику слова padding?

invm
select * from
(
 select '990944',1
 union all
 select '990944 ',2
 union all
 select '990944',3
) t(a, b)
order by
 a, datalength(a), b;



я как-то сначала про RTRIM подумал
11 фев 16, 17:36    [18805323]     Ответить | Цитировать Сообщить модератору
 Re: Учет пробелов при сортировке  [new]
invm
Member

Откуда: Москва
Сообщений: 9838
Идеальный кот
Ораклоиды ведь тоже стандарты читают - может все упирается в семантику слова padding?
Все упирается в приоритеты. У Oracle в приоритете пожелания пользователей, у MS - стандарты.
Идеальный кот
я как-то сначала про RTRIM подумал
И как поможет rtrim?
11 фев 16, 18:57    [18805722]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить