【问题标题】:Leading Comma or Trailing Comma? [closed]前导逗号还是尾随逗号? [关闭]
【发布时间】:2014-01-30 12:44:51
【问题描述】:

我正在为我工​​作的公司编写 SQL 编码标准。

我读过这样的文献leading is the best option

select a.name
      ,a.surname
      ,a.address
from person a 

但也有尾随:

select a.name,
       a.surname,
       a.address
from person a 

non standard at all

select name, is_disabled,
is_policy_checked, is_expiration_checked
from sys.sql_logins;

我的第一个问题是,是否有全球公认的 SQL 编码标准。如果不是,为什么不呢?我认为这将非常有用。类似 PEP8。

解决这个问题最实用的方法是什么?

提前致谢

【问题讨论】:

  • 有标准吗?好吧,也许不是“官方”,尽管在末尾看到逗号更常见。也就是说,我更喜欢在开头使用逗号。它更具可读性,我不太可能忘记逗号。我有一种特殊的风格,这里有些人讨厌,但它很适合我。
  • 我更喜欢逗号开头。我是一个人,据我所知,没有任何书面语言在单词之前放置逗号。

标签: mysql sql sql-server oracle coding-style


【解决方案1】:

如果查询被解析并执行且没有任何错误。这意味着它符合该语言的基本标准。

至于在哪里放置逗号以及如何缩进代码,这完全取决于个人喜好。

是的,人们定义了一些最佳实践,这些最佳实践再次被大多数人视为“最佳实践”,但不是全部。

有一些最佳实践,大多数人会同意,但不是全部。

  1. 事情很聪明,但不太聪明(KISS / Keep it simple 愚蠢)
  1. 解析查询不是最好的查询,尝试编写

Covering Queries 尽可能。

  1. 为您的对象使用至少由两部分组成的名称,例如 [Schema].[TableName]
  1. 对象 (表、列、存储过程)变量和函数都很好 命名和有意义,而不必考虑太多。
  1. 你在周末休息后回来,你可以直接跳进去
  1. 将被重复使用的东西是可重复使用的
  1. 代码 看起来更干净。后期会更容易调试和修改。
  1. “注释”使用 cmets 来解释代码 sn-p 的作用, 所以如果你在一个月后回到它,你就会知道 阅读 cmets 代码做什么而不是实际执行 通过代码本身。
  1. 使用大写的关键字如“ 选择,从,在哪里“--

为上述查询牢记所有这些事情,我会这样写。

SELECT  A.NAME
       ,A.SURNAME
       ,A.ADDRESS

FROM   PERSON A

回到“重要问题”前导逗号还是尾随逗号?

我个人觉得在我的代码中使用前导逗号更容易,因为它使我更容易找到下一列的开始位置,或者找到缺少的逗号。

例如,在以下查询中,我对堆栈溢出问题之一的回答

SELECT     radius
         , Diameter
         , CASE WHEN POWER( @p1 - x, 2) + POWER( @p2 - y, 2) <= POWER(radius, 2)
             THEN 'Inside The Circle'
            WHEN POWER( @p1 - x, 2) + POWER( @p2 - y, 2) > POWER(radius, 2)
             THEN 'Outside the Circle' END   [Inside/Outside]
FROM @t

如果我有一个逗号,前导逗号可以更容易地找到缺少的逗号,并准确地告诉这个 SELECT 查询有多少列。

一些有用的链接

Aaron Bertrand - Best Practices for Stored Procedures

Richard Espinoza SQL Server Concepts and Best Practices to Build Transact SQL Stored Procedures

pinaldave SQL SERVER – Bad Practice of Using Keywords as an Object Name – Avoid Using Keywords as an Object

【讨论】:

    【解决方案2】:

    对于如何编写 SQL 代码没有单一的标准。有些使用大写关键字,有些使用小写。有些使用尾随逗号,有些使用前导逗号,有些将所有值放在同一行。

    在普通文本中,您使用尾随逗号,这样对大多数人来说更容易阅读。使用前导逗号的一个优点是最后一项的格式与其他项没有不同的格式,但另一方面,第一项的格式不同。

    解决这个问题的实际方法是在您所属的组织中选择一个合理的标准,并坚持下去。拥有外观一致的代码比尝试找到优点最多、缺点最少的格式更有用。

    作为一个例子,这是我经过多年尝试不同变体后开始使用的格式:

    select
        p.Name,
        p.Surname,
        a.Street,
        a.Zip,
        a.City
    from
        Person p
        inner join Address a on a.AdressId = p.AddressId
    where
        p.PersonId = 42
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-02-12
      • 2013-04-08
      • 2021-01-25
      相关资源
      最近更新 更多