2011-05-25 38 views
5

是什么与不同方式别名列

select EmployeeName = empName from employees 

从技术上看

select empName as EmployeeName from employees 

之间的差异。不确定这是否仅仅是SQL服务器特定的。

欣赏你的答案。

回答

6

我更喜欢第一个,因为第二个是不可移植 -

select EmployeeName = empName from employees 

或者是一个语法错误(至少在SQLite和甲骨文),或者根本不给你期待什么(比较两列EmployeeName和empName并返回将比较结果作为一个布尔/整数),而

select empName EmployeeName from employees 

相同

select empName as EmployeeName from employees 

这是我的首选变体。

+0

+1那绝对是一个缺点! – 2011-05-25 13:57:39

+0

确定从雇员中选择EmployeeName empName是有效的sql吗? – 2011-05-25 13:59:26

+0

@Jon如果EmployeeName是表中列的名称,是的,我很确定它是有效的SQL :-) – 2011-05-25 14:07:55

3

第二种语法的主要优点是它允许列别名全部排成一列,这对长表达式有利。

SELECT foo, 
     bar, 
     baz = ROW_NUMBER() OVER (PARTITION BY foo ORDER BY bar) 
FROM T 
+1

由于SQL不关心空白,你不能在任何情况下排队吗? – 2011-05-25 13:49:23

+1

@Alison R.你可以做,但它的更多工作不得不使空白。此外,如果数据项中的内容发生变化,则必须再次调整空白区域 – Curt 2011-05-25 13:50:37

+0

@Alison - 是的。 “允许”是错误的单词,但这意味着我的示例中的“baz”将包装到2行中。一个用表达式,另一个用别名。 – 2011-05-25 13:54:06

1

我不认为有技术上的差异。其主要优惠。我更喜欢第二个,因为它更容易在大型查询中找到列,特别是如果查询正确缩进。