Notepad++ plugin
Instellingen
Elke instelling van de SQL Formatter, uitgelegd met een echt voor/na-voorbeeld — geen giswerk over wat een knopje doet voordat je 'm aanzet.
1. Dialect
Kies ANSI, Snowflake, PostgreSQL, MS SQL, MySQL, SQLite of Databricks. De formatter herschrijft vendor-specifieke functienamen naar het equivalent van het doel-dialect en past meteen een idiomatische casing-preset toe (bijv. Snowflake = alles hoofdletters, PostgreSQL = alles kleine letters).
Snowflake → MS SQL
NVL en LENGTH bestaan niet in T-SQL — de formatter kent het juiste alternatief per dialect (ISNULL, LEN), niet zomaar één vaste vertaling.
Voor
SELECT NVL(discount, 0), LENGTH(customer_name) FROM orders
Na
SELECT ISNULL(discount, 0), LEN(customer_name) FROM orders
MS SQL → Snowflake
En de andere kant op: IIF, ISNULL en GETDATE() krijgen hun Snowflake-equivalent, inclusief de standaard-casing die bij dat dialect hoort.
Voor
select iif(amount>1000,'large','small'), isnull(notes,'-'), getdate() from orders
Na
SELECT IFF(AMOUNT > 1000, 'LARGE', 'SMALL'), NVL(NOTES, '-'), CURRENT_TIMESTAMP FROM ORDERS
2. Casing
Los instelbaar voor keywords, functienamen en identifiers (tabel- en kolomnamen): Behouden, Kleine letters of Hoofdletters. Zo kun je bijvoorbeeld keywords in hoofdletters willen zonder dat je kolomnamen mee veranderen.
Keywords upper, functies upper, identifiers lower
Een veelgebruikte combinatie: SQL-keywords en functies opvallend in hoofdletters, tabel- en kolomnamen juist consequent in kleine letters.
Voor
select Count(Order_Id), Customer_Name from Orders where Status = 'active'
Na
SELECT COUNT(order_id), customer_name FROM orders WHERE status = 'active'
3. Kolommen & aliassen
Zet elke SELECT-kolom op zijn eigen regel, kies of de komma voor of na de kolomnaam komt, en bepaal wat er met AS-aliassen gebeurt: toevoegen, verwijderen of laten staan — met een eigen casing voor het woord AS zelf.
Komma vóór + AS toevoegen (lowercase)
De standaardstijl van deze plugin: elke kolom op een eigen regel, komma aan het begin (zodat je 'm meteen ziet bij het scrollen), en een impliciete alias krijgt netjes zijn AS terug.
Voor
SELECT order_id, SUM(amount) total, customer_name FROM orders
Na
select order_id
, sum(amount) as total
, customer_name
from ordersKomma ná + AS verwijderen
De klassieke stijl: komma aan het einde van de regel, en AS wordt juist weggehaald zodat de aliasnaam direct achter de expressie staat.
Voor
SELECT order_id, SUM(amount) AS total, customer_name FROM orders
Na
select order_id,
sum(amount) total,
customer_name
from orders4. Uitlijning
De handtekening-look van deze formatter: SELECT/FROM/WHERE rechts uitgelijnd op elkaars breedte (de klassieke 'trapjes'-stijl), en ON/AND binnen een JOIN uitgelijnd onder het einde van het JOIN-keyword.
Keywords rechts uitgelijnd
select/from/where krijgen allemaal dezelfde rechterkant, zodat de WHERE-voorwaarden direct onder de kolomnamen beginnen.
Voor
SELECT order_id FROM orders WHERE status = 'active'
Na
select order_id from orders where status = 'active'
ON uitgelijnd onder JOIN
Bij meerdere AND-voorwaarden in een JOIN sluiten ze mooi aan onder elkaar, in plaats van los tegen de linkerkant te plakken.
Voor
SELECT * FROM orders o JOIN customers c ON c.customer_id = o.customer_id AND c.active = 1
Na
select *
from orders o
join customers c
on c.customer_id = o.customer_id
and c.active = 15. Structuur
Hoe CASE-statements, CTE's (WITH-clausules), subqueries en puntkomma's worden opgebouwd: elk WHEN op zijn eigen regel of juist compact, CTE's met een lege regel ertussen, subqueries die relatief aan hun eigen ouder inspringen, en puntkomma's die je automatisch laat toevoegen of net verwijderen.
CASE: Expand vs. Inline
'Expand' zet elk WHEN op zijn eigen regel (goed leesbaar bij veel branches); 'Inline' houdt alles op één regel (compact voor korte CASE's).
Voor
SELECT CASE WHEN amount > 1000 THEN 'large' WHEN amount > 100 THEN 'medium' ELSE 'small' END AS size FROM orders
Na
select case
when amount > 1000 then 'large'
when amount > 100 then 'medium'
else 'small'
end as size
from ordersCTE's: elk op nieuwe regel + inspringen
Bij meerdere CTE's in één WITH-clausule krijgt elke CTE zijn eigen blok met een lege regel ertussen, en springt de body van de CTE in onder de naam.
Voor
WITH a AS (SELECT 1), b AS (SELECT 2) SELECT * FROM a, b
Na
with a as (
select 1
)
, b as (
select 2
)
select *
from a
, bPuntkomma's automatisch toevoegen
Handig voor scripts met meerdere statements: elke statement die nog geen puntkomma heeft, krijgt er automatisch één — op de laatste regel, een eigen regel, of behouden zoals het was.
Voor
SELECT 1 FROM t SELECT 2 FROM t
Na
select 1 from t; select 2 from t;
6. Spacing
Spaties rond operators (a = b vs a=b) en binnen functie-haakjes (count( * ) vs count(*)), een lege regel tussen clausules, hoeveel lege regels tussen statements blijven staan, een maximale regellengte, en het automatisch uitwrappen van lange IN (...)-lijsten.
Operators: spaties toevoegen
a=b, a>b en a<>b krijgen allemaal spaties, zonder dat je losse regels voor elke operator hoeft te schrijven.
Voor
SELECT * FROM orders WHERE amount>=100 AND status<>'cancelled'
Na
select * from orders where amount >= 100 and status <> 'cancelled'
Lange IN (...) -lijst uitwrappen
Stel een drempel in tekens; een IN-lijst die langer is, wordt automatisch over meerdere regels verdeeld in plaats van één onleesbare lange regel.
Voor
SELECT * FROM orders WHERE status IN ('active', 'pending', 'processing', 'shipped', 'delivered')Na
select *
from orders
where status in ( 'active', 'pending', 'processing'
, 'shipped', 'delivered' )7. JOINs
Één schakelaar: strip INNER en OUTER weg zodra ze overbodig zijn. INNER JOIN wordt JOIN, LEFT OUTER JOIN wordt LEFT JOIN — korter, en functioneel identiek.
INNER/OUTER strippen
Voor
SELECT * FROM orders o INNER JOIN customers c ON c.id = o.customer_id LEFT OUTER JOIN shippers s ON s.id = o.shipper_id
Na
select *
from orders o
join customers c
on c.id = o.customer_id
left join shippers s
on s.id = o.shipper_id8. FQDN (volledig gekwalificeerde namen)
Vul een database- en/of schemanaam in, en elke tabelreferentie in FROM/JOIN wordt automatisch voorzien van dat voorvoegsel — handig als je met meerdere databases/schema's werkt en overal expliciet wilt zijn.
Database + schema toevoegen
Database = 'analytics', schema = 'public' — elke ongekwalificeerde tabel krijgt 'analytics.public.' ervoor, aliassen blijven onaangeroerd.
Voor
SELECT o.order_id FROM orders o JOIN customers c ON c.id = o.customer_id
Na
select o.order_id
from analytics.public.orders o
join analytics.public.customers c
on c.id = o.customer_id9. Profielen
Sla de complete combinatie van bovenstaande instellingen op onder een naam ('team-stijl', 'client-x', ...), en wissel er met één klik tussen. Exporteer als JSON om te delen met collega's, of importeer het profiel van een teamgenoot.
Extra: los van de Settings-dialoog
Drie functies die je direct vanuit het menu gebruikt, zonder dat je er iets voor hoeft in te stellen.
Convert Quotes
Wissel tussen enkele, dubbele en backtick-quotes voor strings en identifiers — bijvoorbeeld als je van MySQL naar PostgreSQL overstapt.
Voor
SELECT `customer_name` FROM `orders` WHERE `status` = "active"
Na
SELECT 'customer_name' FROM 'orders' WHERE 'status' = 'active'
Nummerformaat converteren
Zet Nederlandse notatie (1.234,56) om naar Engelse (1,234.56), of andersom — voorkomt fouten bij het overtypen van rapportcijfers.
Voor
SELECT * FROM orders WHERE amount > 1.234,56
Na
SELECT * FROM orders WHERE amount > 1,234.56
dbt / Jinja & no-format pragma
{{ ref(...) }}, {{ var }} en {# comment #} worden herkend en nooit gesplitst of van casing veranderd. Wil je een blok helemaal ongemoeid laten, wrap het dan in -- @formatter:off / -- @formatter:on.
Voor
select {{ ref('orders') }}.order_id
-- @formatter:off
from weird_legacy_table x
-- @formatter:onNa
select {{ ref('orders') }}.order_id
-- @formatter:off
from weird_legacy_table x
-- @formatter:on