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

Откуда: СПб
Сообщений: 244
Сортировка ведет себя забавно. Запускаем под 2008
declare @t table (a varchar(15), b int, r int)

insert into @t values ('aaa',1,1)
insert into @t values ('aaa',2,2)
insert into @t values ('aaa',3,3)
insert into @t values ('bbb',4,1)

select a=case r when 1 then a else '' end, b
from @t x
order by x.a
Результат, как и ожидалось:

aaa 1
2
3
bbb 4

select a=case r when 1 then a else '' end, b
from @t x
order by a
Результат:

2
3
aaa 1
bbb 4

Запуск под 2005 в обоих случаях приводит к результату 2.
Т.е. в order "на ходу " подхватываются алиасы полей из select, а в 2005 и вообще не объяснить, что совпадающий алиас надо брать из таблицы.
Забавно.
9 окт 09, 09:55    [7762538]     Ответить | Цитировать Сообщить модератору
 Re: Прелестная фича  [new]
daw
Member

Откуда: Муром -> Москва
Сообщений: 7381

> Т.е. в order "на ходу " подхватываются алиасы полей из select, а в 2005
> и вообще не объяснить, что совпадающий алиас надо брать из таблицы.
> Забавно.

а версию вашего 2005-ого можно увидеть?
такой фокус в 2000-ом был - это да, но уже начиная с 2005-ого все
работает так, как описано - если имя столбца указано без имени
таблицы, то в первую очередь подразумевается, что это алиас.

Posted via ActualForum NNTP Server 1.4

9 окт 09, 10:03    [7762579]     Ответить | Цитировать Сообщить модератору
 Re: Прелестная фича  [new]
daw
Member

Откуда: Муром -> Москва
Сообщений: 7381

> если имя столбца указано без имени
> таблицы, то в первую очередь подразумевается, что это алиас.

а если указано с именем таблицы - что это столбец таблицы.
вот в 2000-ом, действительно, имя таблицы в order by игнорировалось - был такой баг.

Posted via ActualForum NNTP Server 1.4

9 окт 09, 10:04    [7762594]     Ответить | Цитировать Сообщить модератору
 Re: Прелестная фича  [new]
remi_
Member

Откуда: СПб
Сообщений: 244
daw

а версию вашего 2005-ого можно увидеть?


А чего ж нельзя - 9.0.3042
9 окт 09, 10:05    [7762595]     Ответить | Цитировать Сообщить модератору
 Re: Прелестная фича  [new]
daw
Member

Откуда: Муром -> Москва
Сообщений: 7381

> А чего ж нельзя - 9.0.3042

сейчас проверил - это еще и от Compatibility Mode зависит.
при 80 поведение как в 2000-ом.

Posted via ActualForum NNTP Server 1.4

9 окт 09, 10:09    [7762619]     Ответить | Цитировать Сообщить модератору
 Re: Прелестная фича  [new]
daw
Member

Откуда: Муром -> Москва
Сообщений: 7381

*Compatibility Mode

Compatibility Level

Posted via ActualForum NNTP Server 1.4

9 окт 09, 10:11    [7762625]     Ответить | Цитировать Сообщить модератору
 Re: Прелестная фича  [new]
remi_
Member

Откуда: СПб
Сообщений: 244
Все так.
Думал, раскопал что-то новенькое.
Начать что ли читать документацию (с сомнением чешет в затылке) :-)
9 окт 09, 10:15    [7762659]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить