是否有任何特殊原因(性能或其他方面)在使用别名列时使用AS?
我个人的偏好(为了便于阅读)是使用这个:
select
alias1 = somecolumn
alias2 = anothercolumn
from
tables
etc...
而不是这个:
select
somecolumn as alias1
anothercolumn as alias2
from
tables
etc...
我错过了任何我不应该这样做的理由吗?在格式化列时,其他人的偏好是什么?
'='不是有效的ANSI SQL,因此如果您希望在不同的DBMS上运行应用程序,则会遇到困难。
(当使用ANSI表格但省略了可选的'AS'时,我发现个人难以阅读的结果。)
我更喜欢不使用那些。我只是给出了列的名称,中间没有任何关键字
SELECT MAX(price_column) maximumprice FROM prices
由“=”语法声明的列别名在SQL Server 2008中已弃用,在下一版本中不受支持。见MSDN article。
我喜欢
SELECT
column1 = table.column1
,column2 = table.colum2
FROM table
我发现AS与a =符号相比并不那么容易记录(我可以发现=比AS快)
另外当一个人只做SELECT列别名时,有时候知道哪个是哪个是令人困惑的:)
虽然我倾向于使用AS,但这里真正关键的是拥有企业标准并遵循它。如果你的更多人使用AS而不是=那么每个人都应该使用它。编码标准使得维护代码变得更容易,而不是您选择的特定标准。如果每个人都使用相同的东西,那么你的眼睛习惯于把它拿出来。
你也不必使用它们
删除AS并使用
SELECT originalname alias
FROM
tablename
**即使我更喜欢使用'as'而不是'='。 '='使代码混乱。
e.g:
column as alias1
为了加入一些配重,我更喜欢使用=。
如果我以某种方式成为查询结果的使用者,我发现查看作为消费者的哪些列可以使用它更方便。
我更喜欢这个
SELECT
[ElementObligationID] = @MaxElementObligationID + eo.ElementObligationID
, [ElementID] = eo.ElementID
, [IsotopeID] = eo.IsotopeID
, [ObligationID] = eo.ObligationID
, [ElementWeight] = eo.ElementWeight * -1
, [FissileWeight] = eo.FissileWeight * -1
, [Items] = eo.Items * -1
, [Comment] = eo.Comment
, [AdditionalComment] = eo.AdditionalComment
, [Aanmaak_userid] = @UserID
, [Aanmaak_tijdstip] = GetDate()
, [Laatste_wijziging_userid] = @UserID
, [Laatste_wijziging_tijdstip] = GetDate()
FROM dbo.KTM_ElementObligation eo
INNER JOIN dbo.KTM_ElementObligationArticle eoa ON
eoa.ElementObligationID = eo.ElementObligationID
在此
SELECT
@MaxElementObligationID + eo.ElementObligationID AS [ElementObligationID]
, eo.ElementID AS [ElementID]
, eo.IsotopeID AS [IsotopeID]
, eo.ObligationID AS [ObligationID]
, eo.ElementWeight * -1 AS [ElementWeight]
, eo.FissileWeight * -1 AS [FissileWeight]
, eo.Items * -1 AS [Items]
, eo.Comment AS [Comment]
, eo.AdditionalComment AS [AdditionalComment]
, @UserID AS [Aanmaak_userid]
, GetDate() AS [Aanmaak_tijdstip]
, @UserID AS [Laatste_wijziging_userid]
, GetDate() AS [Laatste_wijziging_tijdstip]
FROM dbo.KTM_ElementObligation eo
INNER JOIN dbo.KTM_ElementObligationArticle eoa ON
eoa.ElementObligationID = eo.ElementObligationID
只是我的2c。
我不会简单地使用它,因为它看起来太像平等操作。 'AS'很清楚,因为它对我来说并不含糊。
它与在sql中不使用大写相同,我发现它更难阅读。
我没有在这里张贴的其他人那么幸运。我使用的代码通常由其他人编写,很少有CASE语句或其他计算,连接或逻辑导致单个条目跨越多行T_SQL脚本。
使用等号而不是“AS”更容易阅读。使用等号,您知道您要查找的别名是在行的第一个位置。当使用'AS'并且T_SQL跨越多行时,别名可以在任何地方。
使用equals时,使用'AS'时,找到'Items'别名远比使用'AS'要容易得多。
SELECT
ElementObligationID = @MaxElementObligationID + eo.ElementObligationID
, ElementID = eo.ElementID
, IsotopeID = eo.IsotopeID
, ObligationID = eo.ObligationID
, ElementWeight = eo.ElementWeight * -1
, FissileWeight = eo.FissileWeight * -1
, Items = CASE WHEN eo.Items < 0 THEN eo.Items * -1
WHEN eo.Items > 0 THEN eo.Items
ELSE 0 END
, Comment = eo.Comment
, AdditionalComment = eo.AdditionalComment
, Aanmaak_userid = @UserID
, Aanmaak_tijdstip = GetDate()
, Laatste_wijziging_userid = @UserID
, Laatste_wijziging_tijdstip = GetDate()
FROM dbo.KTM_ElementObligation eo
INNER JOIN dbo.KTM_ElementObligationArticle eoa ON
eoa.ElementObligationID = eo.ElementObligationID
现在想象一下,这里的代码数量超过5倍,并且需要找到“Items”别名。
SELECT
@MaxElementObligationID + eo.ElementObligationID AS ElementObligationID
, eo.ElementID AS ElementID
, eo.IsotopeID AS IsotopeID
, eo.ObligationID AS ObligationID
, eo.ElementWeight * -1 AS ElementWeight
, eo.FissileWeight * -1 AS FissileWeight
, CASE WHEN eo.Items < 0 THEN eo.Items * -1
WHEN eo.Items > 0 THEN eo.Items
ELSE 0 END AS Items
, eo.Comment AS Comment
, eo.AdditionalComment AS AdditionalComment
, @UserID AS Aanmaak_userid
, GetDate() AS Aanmaak_tijdstip
, @UserID AS Laatste_wijziging_userid
, GetDate() AS Laatste_wijziging_tijdstip
FROM dbo.KTM_ElementObligation eo
INNER JOIN dbo.KTM_ElementObligationArticle eoa ON
eoa.ElementObligationID = eo.ElementObligationID
'AS'与'='并不是一种反复无常的偏见。当我说有时需要几分钟才能找到我正在寻找的别名时,我并不夸张,因为我现在负责维护的脚本的作者没有使用带别名的等号。我不能想到浪费时间,金钱和资源,而不是付钱给IT专业人员来寻找代码中的别名!如果您关心可维护性,可读性和效率,则有正确和错误的答案。你的工作就是提供商业价值,而不是花一天时间寻找Waldo!
=可以与任务和平等相混淆;实际上,我真的不喜欢的形式是它看起来像一个字符串(通常涉及空格时):
somecolumn as 'alias 1'
要么
'alias 1' = somecolumn
我更喜欢替代符号:
somecolumn as [alias 1]
“=”只是简单明了。
如果你缩进打破每个select子句......
select
alias1 = somecolumn,
alias2 = anothercolumn,
result = column1 * column2
from
table
....
select
somecolumn as alias1,
anothercolumn as alias2,
column1 * column2 as result
from
tables
...
后缀别名形式(带或不带“AS”)在列别名和表别名之间是一致的。就个人而言,我想要一个强制使用“AS”的选项,然后你就不会遇到这种情况:
select
columnA,
columnB
columnC
from
table
生成具有两列而不是预期的3列的结果集。
我还说使用前缀“=”形式,如果你正在混合获得结果集和变量赋值,它会使它更难阅读:
select
cA = columnA,
@cB = columnB,
cC = columnC
from
table
我知道别名的三种方式:
回复:1),我更喜欢这个,因为它是最自我记录的代码(IMO),它让我搜索AS
如果我需要找到别名..
回复:2),这是我的第二选择,但没有AS
,我不知道这是否是一个剪切和粘贴错误,尤其是在长,格式错误的查询中。
回复:3),我不喜欢这个因为a)它看起来像是一个赋值,而b)它与ON
子句和CASE
语句混合得太多了
所以,我的投票是使用AS
关键字作为你的别名。
我更喜欢使用AS
,因为=
用在where语句中,并且在长查询中可能会令人困惑。