SQL Server中列别名的惯用写法:“别名=表达式”与“表达式 AS 别名”孰优?
咱在SQL Server圈子里混久了,这俩列别名写法其实都能正常执行,但要说哪种更贴合行业惯用规范,得分场景和偏好唠清楚:
写法二
SELECT expression AS AliasName FROM TheTable是更通用的首选
这种带AS的写法是ANSI SQL标准语法,不仅在SQL Server里能用,在MySQL、PostgreSQL等其他主流数据库里也完全兼容。微软官方的T-SQL编码规范也把它作为推荐写法,毕竟跨库兼容性强,团队里如果有熟悉其他数据库的成员,也不用额外适应语法。而且从可读性来说,AS作为“别名标识”,能清晰区分表达式和别名,新手也更容易理解。写法一
SELECT AliasName = expression FROM TheTable是SQL Server专属语法糖
这是T-SQL特有的“赋值式”别名写法,算是微软给SQL Server用户的小便利。它的优势在于,当表达式很长(比如复杂的CASE判断、多字段聚合计算)时,把别名放在前面,读者一眼就能知道这个列的名称,不用费劲往后找完整表达式。但缺点也很明显:它只在SQL Server(以及兼容T-SQL的数据库比如Azure SQL)里生效,换个数据库就会报错,而且不符合通用SQL标准,团队如果有跨库需求的话,这种写法会增加维护成本。
总结
如果你的代码只在纯SQL Server环境运行,且团队内部没有硬性风格规定,两种写法都能用。但更符合广泛惯用规范的是写法二,尤其是需要跨库兼容、遵循行业通用标准,或者团队有新人加入时,带AS的写法认知成本更低、通用性更强。如果是SQL Server专属场景,想让长表达式的别名更醒目,写法一也没问题,但记得团队内部要统一风格,避免混乱。
内容的提问来源于stack exchange,提问作者user482745

