Formatador de SQL Server (T-SQL)

Cole uma consulta T-SQL e receba SQL formatado de forma consistente. [Identificadores] entre colchetes, @parâmetros e cláusulas do SQL Server como TOP e OPTION são todos tratados.

Uma consulta SQL Server, antes e depois

A consulta sem formatação abaixo é o exemplo carregado no editor acima, e a saída é exatamente o que este formatador devolve para ela com as opções padrão. Nada foi ajustado à mão.

Colado
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
Saída formatada
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

Sintaxe do SQL Server que ele trata

Um formatador genérico destrói a sintaxe específica do dialeto ou simplesmente a recusa. Estas são as construções do SQL Server contra as quais este formatador é testado.

@Parameter

Parâmetros do T-SQL são detectados e agrupados por nome.

[identifier]

Identificadores entre colchetes mantêm os colchetes e o espaçamento interno.

TOP (n)

Formatado como parte da cláusula SELECT em vez de ser separado.

@@ROWCOUNT

Variáveis de sistema não são reportadas como parâmetros.

Perguntas frequentes do formatador de SQL Server

Os @parâmetros são detectados?

Sim, e variáveis de sistema como @@ROWCOUNT são corretamente excluídas, então só parâmetros reais aparecem no painel de Parâmetros. Preencha cada parâmetro uma vez e todas as ocorrências na consulta são atualizadas juntas.

Ele formata uma consulta com várias CTEs?

Sim. Toda cláusula WHERE da consulta é listada pela CTE a que pertence, então você escolhe uma e a edita como árvore AND/OR ou grafo de nós, enquanto o resto da consulta permanece intocado.

Minha consulta é enviada para um servidor?

Não. Tudo roda no seu navegador, então nomes de esquema, nomes de tabela e quaisquer valores embutidos nunca saem da sua máquina.

Identificadores entre colchetes com espaços ou palavras reservadas são tratados?

Sim. Um nome como [Order Details] é lido como um identificador único, colchetes e espaçamento interno incluídos, então o espaço dentro do nome nunca é tratado como separador de tokens e uma palavra reservada entre colchetes nunca é reescrita como palavra-chave.

Ele formata um comando T-SQL parcial?

Sim. Um trecho funciona — inclusive um WHERE [o].[OrderDate] >= @StartDate sozinho — porque nada depende de uma análise completa. Esse é o caso comum quando você copiou um predicado de um procedimento armazenado longo para trabalhar nele isoladamente.

Hints de consulta como OPTION (RECOMPILE) são preservados?

Sim. Os hints passam no lugar em que estão, sem serem reordenados ou descartados, então a consulta formatada continua sendo a consulta que você estava ajustando e o plano que volta é o que você estava medindo.