T-SQL - 混叠使用“=”与“为”T-SQL - 混叠使用“=”与“为”(T-SQL - A

2019-05-12 04:36发布

有什么特别的原因(性能或其他方式)AS提前=的使用别名的列时?

我个人的偏好(为便于阅读)是用这样的:

select
alias1     = somecolumn
alias2     = anothercolumn
from
tables
etc...

而不是这样的:

select
somecolumn as alias1
anothercolumn as alias2
from
tables
etc...

我是否错过了任何理由,我不应该这样做呢? 什么是其他人的喜好,当谈到自己的格式列?

Answer 1:

“=”是无效的ANSI SQL,所以你有困难,你应该希望在不同的DBMS运行应用程序。

(这是在使用ANSI形式,但可选的“AS”省略我觉得困难的结果看,个人。)



Answer 2:

把一些重,我更喜欢使用=。

如果我以某种方式查询结果的消费者,我觉得它更方便地看到我作为一个消费者可以使用哪些列。

我喜欢这个

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。



Answer 3:

我不会简单地使用它,因为它看起来太像平等的操作。 “AS”显然因为它不是模棱两可给我。

它与在SQL不使用大写,我发现它难以阅读。



Answer 4:

我不像其他人谁已经张贴在这里这么幸运。 和我一起工作的代码通常是别人写的,这是罕见的,有没有导致单个条目可以跨越T_SQL脚本的几行CASE语句或其它计算,级联或逻辑。

使用等号,而不是“AS”是迄今为止更容易阅读。 等号你知道你正在寻找的别名是在该行的第一个位置。 当“AS”的使用量和T_SQL跨越多行,别名可以从字面上是任何地方。

这是很远很远,当等于使用“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倍以上的金额,并需要找到“项目”的别名。

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” VS“=”不是反复无常和任意的偏好。 当我说有过什么时候会需要几分钟才能找到别名我期待的,因为脚本的作者我现在负责维护没有使用等号与他们的别名登录的时候,我不是夸大。 我想不出的时间,金钱和资源浪费较大的比付出的IT专业人士来寻找别名的代码! 还有,如果你关心的可维护性,可读性和效率的正确和错误的答案 。 你的任务是提供商业价值,不花你的一天寻找沃尔多!



Answer 5:

=可以与分配和平等混淆; 其实,我真的不喜欢的形式是,当它看起来像一个字符串(通常在空间的时候):

somecolumn as 'alias 1'

要么

'alias 1' = somecolumn

我远远更喜欢另类符号:

somecolumn as [alias 1]


Answer 6:

“=”是只是简单不明确的。

如果缩进打破每个SELECT子句...

select
    alias1     = somecolumn,
    alias2     = anothercolumn,
    result     = column1 * column2
from
    table
....


select
    somecolumn as          alias1,
    anothercolumn as       alias2,
    column1 * column2 as   result
from
    tables
     ...


Answer 7:

后缀别名形式(具有或不具有“AS”)是列和表别名之间是一致的。 就个人而言,我想一个选项,以强制使用“AS”,然后你不会有这种情况:

select
    columnA,
    columnB
    columnC
from
    table

产生具有两列,而不是预期的3的结果集。

我也想说,以前缀“=”的形式,它可以使更多的困难,如果你混合获得一个结果集和变量赋值阅读:

select
    cA = columnA,
    @cB = columnB,
    cC = columnC
from
    table


Answer 8:

这三个方面,我所知道的别名:

  1. TableColumn的AS MyAlias
  2. TableColumn的MyAlias
  3. MyAlias = TableColumn的

回复:1),我喜欢这个,因为它是最自记录代码(IMO),它可以让我寻找AS ,如果我需要找到别名..

回复:2),这是我的第二选择,但没有AS ,我从来不知道这是否是一个剪切和粘贴错误与否,特别是在长期,严重格式的查询。

回复:3),我不喜欢这一点,因为A)它看起来像一个任务,和b)它太大融合了ON子句和CASE语句

所以,我的票是使用AS关键字为你的别名。



Answer 9:

我更喜欢使用AS=在where语句中使用,并且可以在一个长的查询混乱。



Answer 10:

我更喜欢使用那些都。 我只给了列的名称而不之间的任何关键字

SELECT MAX(price_column) maximumprice FROM prices


Answer 11:

通过“=”语法声明的列别名弃用SQL Server 2008和在下一版本不支持。 请参阅MSDN文章 。



Answer 12:

我喜欢

SELECT
 column1 = table.column1
 ,column2 = table.colum2
FROM table

我发现AS不容易相比=符号noticable(I可以当场=比AS更快)

此外,当一个只是没有选择列的别名,有时是很难知道哪个是哪个:)



Answer 13:

虽然我使用AS的偏爱,这里真正关键的是要有一个企业标准,并遵循它。 如果您更多的人用AS比=然后每个人都应该使用它。 编码标准是什么使得它更易于维护的代码不是特定的标准你挑。 如果大家都使用同样的事情,那么你会觉得看习惯挑选出来。



Answer 14:

你不必要么使用

掉落的AS和使用

SELECT originalname alias
FROM
   tablename


Answer 15:

**甚至我更喜欢使用“作为”而不是“=”。 “=”使得混乱代码。

例如:

 column as alias1


文章来源: T-SQL - Aliasing using “=” versus “as”