Reglas de formato SQL – Comas y espaciado en T-SQL

Este artículo describe algunas posibilidades de formatear comas y espacios en T-SQL usando ApexSQL Refactor, un formateador SQL gratuito con casi 200 opciones de formato SQL.

Formateando comas en T-SQL

Las comas en T-SQL son usadas para formatear números, como separadores de listas, y como separadores de valores. Cuando las comas son usadas como separadores, no hay una regla específica para colocar las comas al final de una línea o al principio.

Algunas opiniones están basadas en el hecho de que los idiomas Inglés y Europeos son leídos desde la izquierda a la derecha y que la posición natural del separador coma en los lenguajes de programación es al final de una línea.

«Ponga las comas al final de una línea, no al principio. Una coma, punto y coma, signo de interrogación o puntos son signos visuales de que algo ha terminado, no que está empezando. Tener una coma al inicio de una línea hará que ojo vaya a la izquierda dado que busca la palabra perdida que era esperada antes de la coma.» [1]

SELECT
       e.BusinessEntityID, 
       p.Title, 
       p.FirstName, 
       p.MiddleName, 
       p.LastName, 
       p.Suffix, 
       s.Name AS Shift, 
       d.Name AS Department, 
       d.GroupName, 
       edh.StartDate, 
       edh.EndDate

De todas maneras, más a menudo las comas como separadores de listas son escritos al principio de una línea para hacer el comentado de miembros de la lista más fácil en desarrollo. Esto es también estándar en la base de datos Adventureworks2012:

SELECT
     e.BusinessEntityID
   , p.Title
   , p.FirstName 
   , p.MiddleName
   , p.LastName -- easier commenting of list members  
   , p.Suffix
   , s.Name AS Shift
   , d.Name AS Department
   , d.GroupName
   , edh.StartDate 
   , edh.EndDate;

Ambas opciones para formatear comas en listas de columnas están disponibles en ApexSQL Refactor debajo de la pestaña Data Statements en el diálogo Column list options:

Both options for formatting commas are found in column lists tab

También, formatear comas en listas de valores tiene partidarios en ambos lados. Algunos colocarán las comas al principio de la línea para hacer el comentario de valores más fácil:

     VALUES
           ('DepartmentName'
            ,'GroupName'
            ,GetDate())

Los otros colocarán las comas al final de una línea para seguir las convenciones lingüísticas inglesas y europeas:

     VALUES 
           ('DepartmentName',
            'GroupName',
             GetDate())

También hay una opción para formatear comas en listas de valores, en el diálogo Formatting options debajo de la pestaña Value lists:

Options to format commas located under the value lists tab

Formatear espacios en T-SQL

Usando ApexSQL Refactor usted puede lograr mejor legibilidad del T-SQL usando muchas opciones de espaciado en la pestaña General en el diálogo Formatting options y una sangría apropiada:

  1. Para lograr legibilidad con espacios después de las comas escoja la opción Add spaces after commas en la pestaña General desde el diálogo Formatting options:

    Choosing the Add spaces after commas option

    Antes:

    INSERT INTO HumanResources.Shift(Name,StartTime,EndTime,ModifiedDate)

    Después:

    INSERT INTO HumanResources.Shift(Name, StartTime, EndTime, ModifiedDate)
  2. Usando la opción Add spaces around comparison operators:

    Dialog showing the Add spaces around comparison operators option

    Antes:

    WHERE b.[ProductAssemblyID]=@StartProductID 
                AND @CheckDate>=b.[StartDate] 
                AND @CheckDate<=ISNULL(b.[EndDate], @CheckDate)

    Después:

    WHERE b.[ProductAssemblyID] = @StartProductID 
                AND @CheckDate >= b.[StartDate] 
                AND @CheckDate <= ISNULL(b.[EndDate], @CheckDate)
  3. Usando la opción Add spaces around arithmetic operators:

    Dialog showing the Add spaces around arithmetic operators option

    Antes:

    SELECT (quantity*2) FROM products WHERE order_number = 10;
    SELECT (quantity*5) FROM products WHERE order_number = 10;

    Después:

    SELECT (quantity * 2) FROM products WHERE order_number = 10;
    SELECT (quantity * 5) FROM products WHERE order_number = 10;
  4. Usando la opción Add spaces around assignment operators:

    «El signo igual (=) es el único operador de asignación de Transact SQL» [2]

    Dialog showing the Add spaces around assignment operators option

    Antes:

    SELECT(quantity * 2) FROM products WHERE order_number=10;
    SELECT(quantity * 5) FROM products WHERE order_number=10;

    Después:

    SELECT(quantity * 2) FROM products WHERE order_number = 10;
    SELECT(quantity * 5) FROM products WHERE order_number = 10;
  5. Y añadiendo espacios dentro y fuera de los paréntesis

    Dialog showing options for adding spaces inside and outside parentheses

    Antes:

    SELECT(quantity * 2) FROM products WHERE order_number = 10;
    SELECT(quantity * 5) FROM products WHERE order_number = 10;

    Después:

    SELECT ( quantity * 2 ) FROM products WHERE order_number = 10;
    SELECT ( quantity * 5 ) FROM products WHERE order_number = 10;

Referencias:

[1] Joe Celko’s SQL Programming Style
[2] Assignment Operator (Transact-SQL)

Fuentes útiles:

Books Online for SQL Server – Arithmetic Operators
Books Online for SQL Server – Comparison Operators (Transact -_SQL)

Traductor: Daniel Calbimonte

junio 18, 2015