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:
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:
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:
- 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:
Antes:
INSERT INTO HumanResources.Shift(Name,StartTime,EndTime,ModifiedDate)
Después:
INSERT INTO HumanResources.Shift(Name, StartTime, EndTime, ModifiedDate)
- Usando la opción Add spaces around comparison operators:
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)
- Usando la opción Add spaces around arithmetic operators:
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;
- Usando la opción Add spaces around assignment operators:
«El signo igual (=) es el único operador de asignación de Transact SQL» [2]
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;
- Y añadiendo espacios dentro y fuera de los paréntesis
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