Formateador de SQL Server (T-SQL)
Pega una consulta de T-SQL y obtén SQL formateado de forma consistente. Los [identificadores] entre corchetes, los @parámetros y las cláusulas de SQL Server como TOP y OPTION se tratan correctamente.
Una consulta SQL Server, antes y después
La consulta sin formato de abajo es el ejemplo cargado en el editor de arriba, y la salida es exactamente lo que devuelve este formateador con las opciones por defecto. No se ha retocado nada a mano.
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 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 Sintaxis de SQL Server que soporta
Un formateador genérico destroza la sintaxis propia del dialecto o la rechaza directamente. Estas son las construcciones de SQL Server contra las que se prueba este formateador.
@Parameter Los parámetros de T-SQL se detectan y se agrupan por nombre.
[identifier] Los identificadores entre corchetes conservan sus corchetes y su espaciado interno.
TOP (n) Se formatea como parte de la cláusula SELECT en lugar de separarse.
@@ROWCOUNT Las variables de sistema no se reportan como parámetros.
Preguntas frecuentes del formateador de SQL Server
¿Se detectan los @parámetros?
Sí, y las variables de sistema como @@ROWCOUNT se excluyen correctamente, así que en el panel de Parámetros solo aparecen parámetros reales. Rellena cada parámetro una vez y todas sus apariciones en la consulta se actualizan a la vez.
¿Puede formatear una consulta con varias CTE?
Sí. Todas las cláusulas WHERE de la consulta aparecen listadas por la CTE a la que pertenecen, así que puedes elegir una y editarla como árbol AND/OR o como grafo de nodos mientras el resto de la consulta queda intacto.
¿Se envía mi consulta a un servidor?
No. Todo se ejecuta en tu navegador, así que los nombres de esquema, los nombres de tabla y cualquier valor incrustado nunca salen de tu máquina.
¿Se manejan los identificadores entre corchetes con espacios o palabras reservadas?
Sí. Un nombre como [Order Details] se lee como un único identificador, corchetes y espaciado interno incluidos, así que el espacio del nombre nunca se toma como separador de tokens y una palabra reservada entre corchetes nunca se reescribe como palabra clave.
¿Puede formatear una sentencia T-SQL parcial?
Sí. Un fragmento funciona —incluido un WHERE [o].[OrderDate] >= @StartDate suelto— porque nada depende de un análisis completo. Ese es el caso habitual cuando has copiado un predicado de un procedimiento almacenado largo para trabajarlo por separado.
¿Se conservan las pistas de consulta como OPTION (RECOMPILE)?
Sí. Las pistas se dejan pasar en su sitio en vez de reordenarse o descartarse, así que la consulta formateada sigue siendo la consulta que estabas ajustando y el plan que obtienes es el que estabas midiendo.