use AdventureWorks2012;
go
select
[New Name] = Name,
NewDepId = DepartmentID,
GroupName as GName,
ModifiedDate MyModDate
from HumanResources.Department;
SELECT
alias1 = (long expression with aggregates and multiple column references),
(long expression with aggregates and multiple column references AS alias2
FROM ...
两种别名的底层功能没有区别(
as
相反=
)。它归结为正是您提到的:可读性和可维护性。在我看来,前者 (
<Expression> as <Alias>
) 更具可读性,因为它是不言自明的。当您拥有时,SELECT ColumnName = 1
我认为很容易将其误认为是在那些漫长而疲惫的夜晚设置变量。您可能会误认为SELECT @ColumnName = 1
那将是完全不同的功能。因此,为了避免查询“双重查看”的任何可能性,或者更糟糕的是......理解/编码错误,我SELECT 1 as ColumnName
100% 的时间都去。个人喜好,但一致性(对你自己和团队内部)才是王道。无论您发现什么最容易,请一直坚持下去。对于故障排除/审查/维护代码的人来说,没有什么比来回切换更令人沮丧的了。
第三种未提及的方式是使用
<Expression> <Alias>
. 换句话说,您的第二种方式没有as
关键字。=
我认为这和符号一样糟糕。它缺乏可读性的好处是什么?不输入三个额外的字符(as
和一个空格)。不值得。为夸大其词,请查看如下查询:
不是我想要查看的代码。
我个人觉得
alias = expression
更容易阅读和理解。原因是,当我对SELECT
包含冗长表达式的语句进行故障排除时,我可能希望通过列名来查找表达式,而不是相反。快速,找到应用程序看到的表达式alias2
:这是我的偏好。你的可能不一样。除了主观/口味原因之外,使用其中一种没有真正的优势。重要的是你选择一种方式去做,并且始终如一地去做(除非你掷硬币,否则当你遇到喜欢另一种方式的人时,能够捍卫你的选择)。但是,如果您为像我一样挑剔的 DBA 编写代码,请做好被重写的准备。:-)
我感觉更强烈的一件事是在别名周围使用单引号,例如
一种形式已被弃用,但两者都很难阅读 - 许多新手将别名误认为是字符串文字,因为它看起来就是这样。出于同样的原因,我绝对讨厌使用双引号 (
"alias"
)。如果您需要转义别名,因为它是保留字或选择不当或格式不正确,请使用[square brackets]
.