Como formatar SQL
- Cole uma consulta ou um script inteiro — vários comandos separados por ponto e vírgula, ou lotes separados por
GO. A formatação acontece enquanto você cola. - Escolha o banco em Dialeto para que as regras de aspas dele sejam entendidas (veja a tabela abaixo) — o padrão aqui é SQL Server — e como as palavras-chave são escritas: MAIÚSCULAS, minúsculas ou como estão.
- Escolha Formatar para uma cláusula por linha, com 2 espaços, 4 espaços ou tab, ou Uma linha para espremer cada comando numa linha só, para um log, um arquivo de configuração ou uma string no código.
- Toque em Copiar ao lado do resultado, ou em Baixar para salvar um arquivo .sql.
Como a consulta é organizada
O formatador lê o SQL como uma sequência de pedaços — palavras-chave, nomes, textos, números, operadores, comentários — e os distribui com algumas regras fixas:
- As cláusulas principais abrem linha:
SELECT,FROM,WHERE,GROUP BY,HAVING,ORDER BY,SETeVALUESficam numa linha própria, com o conteúdo identado embaixo;UNION,INSERT INTO,UPDATE,DELETE FROM,WITHeCREATE TABLEmantêm o conteúdo na mesma linha. - Listas ficam um item por linha: as colunas do
SELECT, as linhas doVALUES, as atribuições doSET, as colunas doCREATE TABLEe as CTEs doWITH. Vírgulas dentro de funções e de listasIN (…)continuam na linha. - Os joins ficam embaixo do
FROM, com oONna mesma linha; cadaANDouORde umWHERE,HAVINGou condição de join começa uma linha nova — menos oANDdoBETWEEN … AND …. - Subconsultas são aninhadas: um parêntese que abre um
SELECTganha um nível de recuo e fecha na sua própria linha. NoCASE, cadaWHENeELSEvai numa linha, e oENDse alinha aoCASE. - Comandos ficam separados por uma linha em branco.
Exemplo: relatório de clientes no SQL Server
O exemplo da caixa é uma consulta de relatório em uma linha, com comentário, CASE, a dica de tabela WITH (NOLOCK), um join com duas condições, uma lista IN com UFs e um HAVING. Formatada com as opções padrão:
-- clientes que mais compraram em 2026
SELECT
c.id,
c.nome,
COUNT(p.id) AS pedidos,
SUM(p.valor_total) AS gasto,
CASE
WHEN SUM(p.valor_total) > 5000 THEN 'ouro'
ELSE 'padrão'
END AS faixa
FROM
clientes c WITH (nolock)
LEFT JOIN pedidos p ON p.cliente_id = c.id
AND p.status <> 'cancelado'
WHERE
p.data_pedido >= '2026-01-01'
AND c.uf IN ('SP', 'RJ', 'MG')
GROUP BY
c.id,
c.nome
HAVING
COUNT(p.id) > 2
ORDER BY
gasto DESC;
O comentário fica na sua linha, os textos mantêm as aspas e o acento de “padrão”, e os nomes c, p e gasto continuam como foram escritos. O WITH (NOLOCK) é reconhecido como dica de tabela, e não como o começo de uma CTE. Uma CTE com subconsulta, colunas entre colchetes e um texto Unicode N'…' fica assim:
WITH recentes AS (
SELECT
cliente_id
FROM
pedidos
WHERE
data_pedido > DATEADD(day, -30, GETDATE())
)
SELECT
[Nome Completo],
N'São Paulo' AS cidade
FROM
dbo.clientes
WHERE
id IN (
SELECT
cliente_id
FROM
recentes
)
O que nunca muda
Textos, nomes entre aspas ou colchetes ("Pedido", `pedido`, [Data do Pedido]), números, comentários e corpos com $$ do PostgreSQL são copiados exatamente como estão. As maiúsculas mudam só nas palavras-chave do SQL e, logo antes de um parêntese, nos nomes de funções como COUNT( ou GETDATE(. Os nomes das suas tabelas e colunas mantêm a grafia — inclusive palavras que são palavra-chave em algum banco mas viram nome de coluna com frequência, como date, name, status, type e value. Um nome depois de ponto, como em t.order, é sempre tratado como nome. Nada é acrescentado nem tirado além de espaços, então a consulta formatada devolve o mesmo resultado.
Dialetos: o que a escolha muda
Cada banco escreve SQL de um jeito um pouco diferente, principalmente nas aspas. O dialeto diz ao formatador como ler o texto — ele nunca reescreve o seu SQL para outro banco.
| Dialeto | Lido de outro jeito |
|---|---|
| SQL padrão | 'texto' com '' para uma aspa dentro, "nome", -- comentário e /* comentário */ |
| SQL Server (T-SQL) | [nome] com ]] dentro, N'texto', @variaveis, tabelas temporárias #temp, comentários aninhados, e GO numa linha sozinha como separador de lotes |
| MySQL / MariaDB | "texto" é texto, a barra invertida escapa ('D\'Ávila'), `nome`, # comentário; -- só abre comentário quando vem seguido de espaço |
| PostgreSQL | Corpos $$ … $$ e $tag$ … $tag$ mantidos inteiros, textos E'…' com escapes, comentários /* /* */ */ aninhados, casts com ::, parâmetros $1 |
| Oracle (PL/SQL) | Aspas alternativas q'[D'Ávila]', variáveis :bind |
| SQLite | [nome] e `nome` além de "nome"; parâmetros ?, ?1, :nome, @nome e $nome |
A diferença importa: 'D\'Ávila' é um texto completo no MySQL, mas no SQL padrão e no SQL Server a barra invertida é um caractere comum, o texto termina na segunda aspa e a terceira abre um texto que nunca fecha. Com o dialeto errado você pode ver “Texto não fechado”.
Erros que ele aponta
O formatador não é um analisador completo de SQL e não confere se a consulta é válida no seu banco. Ele só para onde não consegue saber onde um pedaço termina: um texto, nome entre aspas, comentário ou corpo com $$ sem fechamento, um parêntese sem par e aspas curvas (‘ ’ “ ”) coladas do Word ou do WhatsApp. Cada um mostra a linha, a coluna e o ponto marcado com ^.
Limites e dicas
- Código procedural — blocos
BEGIN … ENDdo T-SQL, procedures, PL/pgSQL, pacotes PL/SQL — é organizado como comandos comuns; o corpo de uma função PostgreSQL em$$fica exatamente como está. - Listas longas dentro de
IN (…)e chamadas de função longas ficam numa linha. - Uma linha mantém os comentários
--, então cada um é seguido de uma quebra de linha. - Para comparar duas versões de uma consulta, formate as duas do mesmo jeito e cole no comparador de textos. Resultados em JSON ou XML ficam legíveis com o formatador de JSON e o formatador de XML.
O seu SQL fica no seu aparelho
A formatação roda no navegador. Consultas costumam revelar nomes de tabelas, dados de clientes em literais — CPF, e-mail, telefone — e a estrutura do seu banco; nada disso é enviado nem registrado, e também não é salvo: ao recarregar a página, a caixa fica vazia.
Perguntas frequentes
Formatar muda o que a minha consulta faz?
Não. Só mudam os espaços e as maiúsculas das palavras-chave, e o SQL não diferencia maiúsculas nas palavras-chave. Textos, nomes entre aspas ou colchetes, números e comentários são copiados exatamente, então a consulta devolve as mesmas linhas.
Qual dialeto devo escolher?
O do banco onde a consulta roda. A escolha só muda como aspas, barras invertidas e comentários são lidos; se a consulta não usa nenhuma das formas especiais da tabela acima, todos os dialetos dão o mesmo resultado.
Serve para formatar SQL Server?
Sim, e o dialeto já começa em SQL Server (T-SQL): nomes entre colchetes, textos N'…', variáveis com @, tabelas #temp, dicas como WITH (NOLOCK) e o separador GO são reconhecidos.
Por que uma palavra como date ou name não ficou em maiúsculas?
Palavras como date, name, status, type e value são palavras-chave em alguns bancos, mas nomes de coluna muito comuns, então mantêm a grafia que você escreveu. Funções como count ou date só ficam em maiúsculas quando vêm seguidas de parêntese.
O meu SQL é enviado?
Não. O formatador roda como JavaScript no seu navegador, então as suas consultas não saem do aparelho, e ele funciona até offline depois que a página carrega.
Última atualização: 16 de outubro de 2026