mwj*_*son 22 sql t-sql sql-server
是否有任何特殊原因(性能或其他方面)在使用别名列时使用AS?
我个人的偏好(为了便于阅读)是使用这个:
select
alias1 = somecolumn
alias2 = anothercolumn
from
tables
etc...
Run Code Online (Sandbox Code Playgroud)
而不是这个:
select
somecolumn as alias1
anothercolumn as alias2
from
tables
etc...
Run Code Online (Sandbox Code Playgroud)
我错过了任何我不应该这样做的理由吗?在格式化列时,其他人的偏好是什么?
bob*_*nce 23
'='不是有效的ANSI SQL,因此如果您希望在不同的DBMS上运行应用程序,则会遇到困难.
(当使用ANSI表格但省略了可选的'AS'时,我发现个人难以阅读的结果.)
Lie*_*ers 13
为了加入一些配重,我更喜欢使用=.
如果我以某种方式成为查询结果的使用者,我发现查看作为消费者的哪些列可以使用它更方便.
我更喜欢这个
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
Run Code Online (Sandbox Code Playgroud)
在此
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
Run Code Online (Sandbox Code Playgroud)
只是我的2c.
“ =”只是模棱两可。
如果您要缩进每个select子句...
select
alias1 = somecolumn,
alias2 = anothercolumn,
result = column1 * column2
from
table
....
select
somecolumn as alias1,
anothercolumn as alias2,
column1 * column2 as result
from
tables
...
Run Code Online (Sandbox Code Playgroud)
=可以与分配和平等混淆;实际上,我真正不喜欢的形式是当它看起来像一个字符串时(通常在涉及空格时):
somecolumn as 'alias 1'
Run Code Online (Sandbox Code Playgroud)
要么
'alias 1' = somecolumn
Run Code Online (Sandbox Code Playgroud)
我更喜欢替代符号:
somecolumn as [alias 1]
Run Code Online (Sandbox Code Playgroud)
后缀别名形式(带或不带“AS”)在列别名和表别名之间是一致的。就个人而言,我想要一个强制使用“AS”的选项,然后你就不会遇到这种情况:
select
columnA,
columnB
columnC
from
table
Run Code Online (Sandbox Code Playgroud)
生成具有两列而不是预期的 3 列的结果集。
我还想说,使用前缀“=”形式,如果您混合获取结果集和变量赋值,可能会使阅读变得更加困难:
select
cA = columnA,
@cB = columnB,
cC = columnC
from
table
Run Code Online (Sandbox Code Playgroud)
小智 5
我不像其他在这里发帖的人那么幸运。我使用的代码通常是由其他人编写的,很少有没有CASE语句或其他计算,串联或逻辑导致单个条目跨越T_SQL脚本的几行。
到目前为止,使用等号代替“ AS”更容易阅读。使用等号,您知道要查找的别名在行的第一位置。当使用“ AS”并且T_SQL跨越多行时,别名实际上可以在任何地方。
与使用“ AS”时相比,使用equals时查找“ Items”别名要容易得多。
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
Run Code Online (Sandbox Code Playgroud)
现在想象一下,这里的代码量超过了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
Run Code Online (Sandbox Code Playgroud)
“ AS”与“ =”不是反复无常且任意的偏好。当我说有时需要几分钟的时间才能找到我要查找的别名时,我并不夸张,因为我现在负责维护的脚本的作者没有使用等号和别名。与支付IT专业人员在代码中查找别名相比,我想不出更大的时间,金钱和资源浪费!!如果您关心可维护性,可读性和效率,那么有对与错的答案。您的工作是提供业务价值,而不是花一天的时间寻找Waldo!
归档时间: |
|
查看次数: |
7945 次 |
最近记录: |