Sql-Server
將列別名放在列定義的開頭或結尾有什麼區別嗎?
我總是看到並將我的列別名寫成
SELECT 1 as ColumnName
但是今天遇到了一個使用過的查詢
SELECT ColumnName = 1
這兩個查詢的執行方式有什麼不同嗎?或者 DBA 之間是否有關於使用哪一個的標準?
就我個人而言,我認為對於更長的列定義,第二個更容易閱讀/維護(這篇文章中的好例子),但是我從未見過今天之前使用過的第二個語法,所以我想知道是否有某些原因我不應該是使用它。
兩種別名的底層功能沒有區別(
as
相反=
)。它歸結為正是您提到的:可讀性和可維護性。在我看來,前者 (
<Expression> as <Alias>
) 更具可讀性,因為它是不言自明的。當您擁有時,SELECT ColumnName = 1
我認為很容易將其誤認為是在那些漫長而疲憊的夜晚設置變數。您可能會誤認為SELECT @ColumnName = 1
那將是完全不同的功能。因此,為了避免查詢“雙重查看”的任何可能性,或者更糟糕的是……理解/編碼錯誤,我SELECT 1 as ColumnName
100% 的時間都去。個人喜好,但一致性(對你自己和團隊內部)才是王道。無論您發現什麼最容易,請一直堅持下去。對於故障排除/審查/維護程式碼的人來說,沒有什麼比來回切換更令人沮喪的了。
第三種未提及的方式是使用
<Expression> <Alias>
. 換句話說,您的第二種方式沒有as
關鍵字。=
我認為這和符號一樣糟糕。它缺乏可讀性的好處是什麼?不輸入三個額外的字元(as
和一個空格)。不值得。為誇大其詞,請查看如下查詢:
use AdventureWorks2012; go select [New Name] = Name, NewDepId = DepartmentID, GroupName as GName, ModifiedDate MyModDate from HumanResources.Department;
不是我想要查看的程式碼。