Formateur SQL Server (T-SQL)

Collez une requête T-SQL et obtenez du SQL formaté de façon cohérente. Les [identifiants] entre crochets, les @paramètres et les clauses SQL Server comme TOP et OPTION sont tous gérés.

Une requête SQL Server, avant et après

La requête non formatée ci-dessous est l'exemple chargé dans l'éditeur plus haut, et la sortie est exactement ce que ce formateur en renvoie avec les options par défaut. Rien n'a été retouché à la main.

Collé
WITH ranked AS (SELECT [c].[CustomerID], [o].[OrderID], [o].[Total], ROW_NUMBER() OVER (PARTITION BY [c].[CustomerID] ORDER BY [o].[Total] DESC) AS rn FROM [dbo].[Customers] [c] INNER JOIN [dbo].[Orders] [o] ON [o].[CustomerID] = [c].[CustomerID] WHERE [o].[OrderDate] >= @StartDate AND [c].[Region] = @Region) SELECT TOP 100 * FROM ranked WHERE rn = 1 AND [Total] > @MinTotal ORDER BY [Total] DESC
Sortie formatée
WITH
  ranked AS (
    SELECT
      [c].[CustomerID],
      [o].[OrderID],
      [o].[Total],
      ROW_NUMBER() OVER (
        PARTITION BY
          [c].[CustomerID]
        ORDER BY
          [o].[Total] DESC
      ) AS rn
    FROM
      [dbo].[Customers] [c]
      INNER JOIN [dbo].[Orders] [o] ON [o].[CustomerID] = [c].[CustomerID]
    WHERE
      [o].[OrderDate] >= @StartDate
      AND [c].[Region] = @Region
  )
SELECT
  TOP 100 *
FROM
  ranked
WHERE
  rn = 1
  AND [Total] > @MinTotal
ORDER BY
  [Total] DESC

La syntaxe SQL Server qu'il gère

Un formateur générique massacre la syntaxe propre au dialecte ou la refuse tout net. Voici les constructions SQL Server contre lesquelles ce formateur est testé.

@Parameter

Les paramètres T-SQL sont détectés et regroupés par nom.

[identifier]

Les identifiants entre crochets conservent leurs crochets et leur espacement interne.

TOP (n)

Formaté dans le cadre de la clause SELECT plutôt que détaché.

@@ROWCOUNT

Les variables système ne sont pas signalées comme paramètres.

FAQ du formateur SQL Server

Les @paramètres sont-ils détectés ?

Oui, et les variables système comme @@ROWCOUNT sont correctement exclues : seuls de vrais paramètres apparaissent dans le panneau Paramètres. Remplissez chaque paramètre une fois et toutes ses occurrences dans la requête se mettent à jour ensemble.

Peut-il formater une requête avec plusieurs CTE ?

Oui. Chaque clause WHERE de la requête est listée par la CTE à laquelle elle appartient : choisissez-en une et modifiez-la sous forme d'arbre AND/OR ou de graphe de nœuds, tandis que le reste de la requête reste intact.

Ma requête est-elle envoyée à un serveur ?

Non. Tout s'exécute dans votre navigateur : les noms de schémas, de tables et les valeurs intégrées ne quittent jamais votre machine.

Les identifiants entre crochets contenant des espaces ou des mots réservés sont-ils gérés ?

Oui. Un nom comme [Order Details] est lu comme un identifiant unique, crochets et espacement interne compris : l'espace dans le nom n'est jamais pris pour une limite de jeton, et un mot réservé entre crochets n'est jamais réécrit comme mot-clé.

Peut-il formater une instruction T-SQL partielle ?

Oui. Un fragment fonctionne — y compris un simple WHERE [o].[OrderDate] >= @StartDate — parce que rien ne dépend d'une analyse complète. C'est le cas courant quand vous avez copié un prédicat d'une longue procédure stockée pour le travailler à part.

Les indications de requête comme OPTION (RECOMPILE) sont-elles préservées ?

Oui. Les indications sont recopiées à leur place plutôt que réordonnées ou supprimées : la requête formatée reste la requête que vous étiez en train d'optimiser, et le plan obtenu celui que vous mesuriez.