Sql-Server

將列別名放在列定義的開頭或結尾有什麼區別嗎?

  • May 11, 2020

我總是看到並將我的列別名寫成

SELECT 1 as ColumnName

但是今天遇到了一個使用過的查詢

SELECT ColumnName = 1

這兩個查詢的執行方式有什麼不同嗎?或者 DBA 之間是否有關於使用哪一個的標準?

就我個人而言,我認為對於更長的列定義,第二個更容易閱讀/維護(這篇文章中好例子),但是我從未見過今天之前使用過的第二個語法,所以我想知道是否有某些原因我不應該是使用它。

兩種別名的底層功能沒有區別(as相反=)。它歸結為正是您提到的:可讀性和可維護性。

在我看來,前者 ( <Expression> as <Alias>) 更具可讀性,因為它是不言自明的。當您擁有時,SELECT ColumnName = 1我認為很容易將其誤認為是在那些漫長而疲憊的夜晚設置變數。您可能會誤認為SELECT @ColumnName = 1那將是完全不同的功能。因此,為了避免查詢“雙重查看”的任何可能性,或者更糟糕的是……理解/編碼錯誤,我SELECT 1 as ColumnName100% 的時間都去。

個人喜好,但一致性(對你自己和團隊內部)才是王道。無論您發現什麼最容易,請一直堅持下去。對於故障排除/審查/維護程式碼的人來說,沒有什麼比來回切換更令人沮喪的了。

第三種未提及的方式是使用<Expression> <Alias>. 換句話說,您的第二種方式沒有as關鍵字。=我認為這和符號一樣糟糕。它缺乏可讀性的好處是什麼?不輸入三個額外的字元(as和一個空格)。不值得。

為誇大其詞,請查看如下查詢:

use AdventureWorks2012;
go

select
   [New Name] = Name,
   NewDepId = DepartmentID,
   GroupName as GName,
   ModifiedDate MyModDate
from HumanResources.Department;

不是我想要查看的程式碼。

引用自:https://dba.stackexchange.com/questions/35480