Cet article décrit quelques possibilités de virgules et de l’espacement formatage dans T-SQL en utilisant ApexSQL Refactor, un formateur de SQL gratuit avec près de 200 options de formatage de SQL.
Virgules de formatage dans T-SQL
Les virgules en T-SQL sont utilisées pour formater les nombres, comme séparateurs de liste et séparateurs de valeur. Lorsque les virgules sont utilisées comme séparateurs, il n’y a aucune règle spécifique pour placer des virgules à la fin d’une ligne ou au début.
Certaines opinions sont fondées sur le fait que les langues anglaises et européennes se lisent de gauche à droite et que la position naturelle de la virgule de séparation dans les langages de programmation est à la fin d’une ligne.
“Mettez des virgules à la fin d’une ligne, pas au début. Une virgule, point-virgule, point d’interrogation, ou des points sont des signaux visuels que quelque chose vient de se terminer, non pas qu’elle commence. Avoir une virgule au début d’une ligne fera bouger l’œil vers la gauche comme pour chercher ce mot manquant qui devrait se trouver avant la virgule “ [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
Cependant, le plus souvent des virgules comme séparateurs de liste sont écrits au début d’une ligne pour pouvoir commenter des éléments de la liste plus facilement durant le développement. Ceci est également un standard dans la base de données 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;
Les deux options de formatage de virgules dans les listes de colonnes sont disponibles dans ApexSQL Refactor sous l’onglet Data Statements dans le dialogue Column list options:
Certains vont placer des virgules au début de la ligne pour pouvoir commenter les values plus facilement:
VALUES ('DepartmentName' ,'GroupName' ,GetDate())
D’autres vont placer les virgules en fin de ligne pour suivre les conventions linguistiques européennes:
VALUES ('DepartmentName', 'GroupName', GetDate())
Il ya aussi une option pour formater les virgules dans les listes de valeurs, dans la boîte de dialogue Formatting options sous l’onglet Value lists:
Espacement dans T-SQL
En utilisant ApexSQL Refactor vous pouvez obtenir une meilleure lisibilité de votre code T-SQL en vous servant de plusieurs options d’espacement dans l’onglet General de la boîte de dialogue Formatting options et assurer aussi une indentation correcte:
- Pour une meilleure lisibilité avec les espaces et les virgules, choisissez l’option Add spaces after commas dans l’onglet General du dialogue Formatting options:
Avant:
INSERT INTO HumanResources.Shift(Name,StartTime,EndTime,ModifiedDate)
Après:
INSERT INTO HumanResources.Shift(Name, StartTime, EndTime, ModifiedDate)
- Utilisez l’option Add spaces around comparison operators:
Avant:
WHERE b.[ProductAssemblyID]=@StartProductID AND @CheckDate>=b.[StartDate] AND @CheckDate<=ISNULL(b.[EndDate], @CheckDate)
Après:
WHERE b.[ProductAssemblyID] = @StartProductID AND @CheckDate >= b.[StartDate] AND @CheckDate <= ISNULL(b.[EndDate], @CheckDate)
- Utilisez l’option Add spaces around arithmetic operators:
Avant:
SELECT (quantity*2) FROM products WHERE order_number = 10; SELECT (quantity*5) FROM products WHERE order_number = 10;
Après:
SELECT (quantity * 2) FROM products WHERE order_number = 10; SELECT (quantity * 5) FROM products WHERE order_number = 10;
- Utilisez l’option Add spaces around assignment operators:
“Le signe égal (=) est le seul opérateur d’assignement Transact-SQL” [2]
Avant
SELECT(quantity * 2) FROM products WHERE order_number=10; SELECT(quantity * 5) FROM products WHERE order_number=10;
Après:
SELECT(quantity * 2) FROM products WHERE order_number = 10; SELECT(quantity * 5) FROM products WHERE order_number = 10;
- Et ajoutez des espaces a l’intérieur et à l’extérieur des parenthèses
Avant
SELECT(quantity * 2) FROM products WHERE order_number = 10; SELECT(quantity * 5) FROM products WHERE order_number = 10;
Après:
SELECT ( quantity * 2 ) FROM products WHERE order_number = 10; SELECT ( quantity * 5 ) FROM products WHERE order_number = 10;
Références:
[1] Joe Celko’s SQL Programming Style
[2] Assignment Operator (Transact-SQL)
Ressources utiles:
Books Online for SQL Server – Arithmetic Operators
Books Online for SQL Server – Comparison Operators (Transact -_SQL)
Article traduit par Régis Baccaro
August 21, 2015