Различные способы псевдонима столбца

В чем разница между

select  empName as EmployeeName from employees

против

select  EmployeeName = empName from employees

с технической точки зрения. Не уверен, что это только для SQL-сервера или нет.

Цените ваши ответы.


person ManiP    schedule 25.05.2011    source источник


Ответы (3)


Я бы предпочел первый, так как второй не портативный -

select  EmployeeName = empName from employees

является либо синтаксической ошибкой (по крайней мере, в SQLite и Oracle), либо может не дать вам того, что вы ожидаете (сравнение двух столбцов EmployeeName и empName и возврат результата сравнения в виде логического/целого числа), тогда как

select  empName EmployeeName from employees

такой же как

  select  empName as EmployeeName from employees

который является моим предпочтительным вариантом.

person Frank Schmitt    schedule 25.05.2011
comment
Уверены, что select EmployeeName empName from employees действительно sql? - person Jon Egerton; 25.05.2011
comment
@Jon, если EmployeeName - это имя столбца в таблице, да, я почти уверен, что это правильный SQL :-) - person Frank Schmitt; 25.05.2011
comment
Синтаксис правильный, но я думаю, что Фрэнк Шмитт перепутал столбцы из моего предыдущего запроса. Столбец в таблице — это empName, в то время как вывод должен иметь псевдоним как EmployeeName, поэтому синтаксис будет «выбрать empName EmployeeName из сотрудников» — это правильный SQL. - person ManiP; 25.05.2011
comment
@ManiP - хороший - думал, что схожу с ума! - person Jon Egerton; 25.05.2011

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

SELECT foo,
       bar,
       baz = ROW_NUMBER() OVER (PARTITION BY foo ORDER BY bar)
FROM T
person Martin Smith    schedule 25.05.2011
comment
Поскольку SQL не заботится о пробелах, не можете ли вы выровнять их в любом случае? - person Alison R.; 25.05.2011
comment
@ Элисон Р. Вы могли бы сделать, но это больше работы, чтобы сделать пробелы. Плюс, если в элементе данных что-то изменится, то пробелы придется подгонять заново - person Curt; 25.05.2011
comment
@Элисон - Да. Разрешить было неправильным словом, но это означало бы, что baz в моем примере перенесено на 2 строки. Один с выражением, а другой с псевдонимом. - person Martin Smith; 25.05.2011
comment
Для справки: я уже несколько лет пользуюсь 1-м предпочтением, но этот момент заставил меня дважды подумать! - person Curt; 25.05.2011
comment
Я бы использовал второй синтаксис, если бы все столбцы были псевдонимами. Если только несколько, я путаюсь при чтении, пытаясь понять, начинается ли данная строка с возвращаемых данных или просто псевдоним. - person Philip Kelley; 25.05.2011
comment
Псевдонимы слева во многих случаях облегчают чтение. Например; Имя поля должно указывать на то, что делает код, давая понимание перед чтением и SQL. Все запросы в SP, как правило, не имеют имена полей в одном и том же столбце на экране, что упрощает их обнаружение. - person MatBailie; 25.05.2011

Я не думаю, что есть техническая разница. В основном льготный. Я выбираю второй вариант, так как в больших запросах легче обнаружить столбцы, особенно если запрос имеет правильный отступ.

person Jon Egerton    schedule 25.05.2011