Two free tools to format SQL queries
30 Sep 2020 #sql #productivity #showdevDo you need to format your SQL queries? Are you doing it by hand? Stop! There is a better way!
Instead of formatting SQL queries to follow code conventions by hand, you can use online tools or extensions inside Visual Studio, SQL Server Management Studio or any other text editor.
These are two free tools to format SQL queries and store procedures. Inside Notepad++, use Poor Man’s T-SQL Formatter. And, ApexSQL Refactor for Visual Studio and SQL Server Management Studio.
Before
Before using Poor Man’s T-SQL Formatter and ApexSQL Refactor, I spent too much time formatting queries by hand. It means making keywords uppercase, aligning columns and arranging spaces.
I tried to use “Find and Replace” inside an editor. But, it only worked for making keywords uppercase. Sometimes I ended up messing with variables, parameters or any other thing inside my queries.
Things were worse with long store procedures. I changed two lines and I ended up formatting thousand of lines. “Once you touch it, you’re the owner”.
A sample query from StackOverflow
Let’s format the query to find StackOverflow posts with many “thank you” answers.
select
ParentId as [Post Link],
count(id)
from posts
where posttypeid = 2 and len(body) <= 200
and (body like '%hank%')
group by parentid
having count(id) > 1
order by count(id) desc;
After formatting the query to follow Simon Holywell SQL Style Guide, it should like this
SELECT ParentId AS [Post Link]
, COUNT(id)
FROM posts
WHERE posttypeid = 2
AND LEN(body) <= 200
AND (body LIKE '%hank%')
GROUP BY parentid
HAVING COUNT(id) > 1
ORDER BY COUNT(id) DESC;
Let’s see how these two tools format our sample query.
Poor Man’s T-SQL Formatter
Poor Man’s T-SQL Formatter is a free and open source .NET and JavaScript library to format your SQL queries. It’s available for Notepad++, Visual Studio, SQL Server Management Studio and others. You can try its formatting options online too.
This is how Poor Man’s T-SQL format our sample query in Notepad++.
It doesn’t make function names uppercase. Notice the functions len
and count
.
Also, it indents AND
clauses in the WHERE
clause. I want them right-aligned to the previous WHERE
. But, it’s a good starting point.
Sometimes, it needs a bit of help if the query has single-line comments in it with --
.
By the way, it’s better to use /* */
for single-line comments inside our queries and store procedures. This makes formatting easier when you copy queries or statements from plan cache.
ApexSQL Refactor
ApexSQL Refactor is a free query formatter for Visual Studio and SQL Server Management Studio. It has over 160 formatting options. You can create your own formattig profiles and preview them. It comes with four built-in profiles. Also, you can try it online.
This is how ApexSQL Refactor format our sample query in Visual Studio 2019.
It isn’t perfect either. But, it makes functions uppercase. Point for ApexSQL Refactor.
Also, it indents AND
clauses in the WHERE
too. I couldn’t find an option to change it. But, there is an option to indent ON
in SELECT
statements with JOIN
. It affects ON
for index creation too. We can live with that.
Voilà! Please, save you some time formatting your SQL queries with any of these two free tools. For other alternatives, check this SQLShack collection of formatter tools.
You can find more extensions for Visual Studio in my Visual Studio setup. Also, for tips to tune your SQL Server, read my post on six tips to performance tune your SQL Server.
Happy SQL time!