关于SQL Server SELECT语句列别名风格
目录
注:每个人都有自己的偏好,本文仅为个人观点,且仅针对SQL Server。
公司现存的代码规范文档推荐在SELECT语句中用column_alias = column_name的形式。
在我看来,这个别名风格太过古老,众所周知,MSSQL最开始是从Sybase SQL Server分化出来的,那时就支持上述alias风格,微软应该是为了兼容旧版本才继续支持此风格,但并不代表它推荐此风格。
在微软关于SQL Server的官方文档中,很少看到使用这种别名风格的示例代码。
本人更推荐用column_name AS column_alias风格。
这里大致总结一下使用两种风格的理由:
用AS风格的理由
- AS风格符合ANSI标准,几乎所有DBMS系统都支持此语法,但
=基本只有MSSQL和Sybase支持,后面若有平台迁移的需求,用=会不兼容,将导致更大的工作量。相信大一点的公司不会只使用MSSQL,至少会有大数据平台,在不同平台写Query时,都用AS风格,保持习惯的统一,是一种非常自然的事情。临时将简单SQL从一个平台copy到另外一个平台,只用改表名就可以直接运行 - 若用
=风格,当列非常多SQL非常长,一屏显示不下的时候,阅读起来会和Update语句搞混 =风格容易和select @variable = column这样的变量赋值语句搞混- 符合写SQL时的思考顺序,即先将原始列或表达式写出来,然后再起别名,顺着从左向右写
- 若用
=风格,别名长短不一时,后续的表达式将无法对齐,影响阅读,特别是很多列都是很长的表达式,而且彼此相似的时候,比如大量的SUM(CASE WHEN ...)语句
用=风格的理由
恐怕唯一的好处就是在SQL格式规整,每个列一行的情况下,可读性会更好,基于从左向右的习惯,很快就可以知道有哪些列。
但并不是所有人都会将SQL写得很规整,总会有人写意识流风格的面条式代码,在这种情况下,=风格就没任何优势了。