我不像其他人那样幸运的发布了这里。我使用的代码通常由其他人编写,并且很少有没有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