我不像其他人那樣幸運的發佈了這裏。我使用的代碼通常由其他人編寫,並且很少有沒有CASE語句或其他計算,連接或邏輯導致單個條目跨越幾行T_SQL腳本。
使用等號代替「AS」更容易閱讀。用等號表示您正在查找的別名是該行的第一個位置。當使用'AS'並且T_SQL跨越多行時,別名可以在任何地方。
當使用等於「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'vs'='不是一個反覆無常和任意的偏好。當我說有時需要幾分鐘才能找到我正在查找的別名時,我並不誇張,因爲我現在負責維護的腳本的作者沒有使用帶有別名的等號。我想不出比付IT專業人員在代碼中尋找別名更大的時間,金錢和資源浪費! 如果您關心可維護性,可讀性和效率,那麼有正確和錯誤的答案。你的工作是提供商業價值,而不是花你的一天尋找沃爾多!
我應該詳細說明我的動機。我發現在長查詢和嵌套查詢中搜索別名列是維護查詢最煩人和可能出錯的部分。恕我直言其他可能的後果,如區分選擇對比=和=在哪裏條款和其他可能的後果遠遠不是對我的麻煩,我想知道別人的意見是什麼? – mwjackson 2009-10-01 11:24:21
你有我的投票...但看起來我們的人數超過 –
2009-10-01 11:26:26
它會出現這樣。我認爲重要的是它的可讀性和很好的理念,無論人們的偏好是什麼... – mwjackson 2009-10-01 12:20:21