SQL Formatter

Notepad++ plugin

Selectiebewust formatteren

Eén toets, twee gedragingen: met een selectie formatteert de plugin precies die tekst — niets meer. Zonder selectie pakt hij het hele document. Dat verschil is met opzet ingebouwd, zodat je een script van 300 regels nooit per ongeluk in zijn geheel herschrijft als je alleen die ene rommelige subquery wilde opschonen.

Notepad++ met de Datamodder SQL Formatter plugin en al geformatteerde SQL

Eén subquery opschonen in een groot script

Selecteer alleen de SELECT-statement die je wilt aanpakken — bijvoorbeeld binnen een stored procedure, een CTE-body, of tussen twee andere queries in hetzelfde bestand — en druk op de shortcut. De plugin leest exact de tekens tussen begin en einde van je selectie (Scintilla's SCI_GETSELECTIONSTART/END), formatteert die substring, en plakt het resultaat terug op precies die plek. De rest van het bestand, inclusief eventuele syntax die de formatter niet begrijpt, blijft byte voor byte ongewijzigd.

Voor

EXEC sp_executesql N'
BEGIN
  select order_id, sum(amount) total, status from orders where status=''active'' group by order_id, status;
END'

Na

EXEC sp_executesql N'
BEGIN
  select order_id
       , sum(amount) as total
       , status
    from orders
   where status = ''active''
   group by order_id
          , status;
END'

Geen selectie? Het hele document.

Klik gewoon ergens in de editor zonder tekst te selecteren en druk op de shortcut: dan wordt het volledige bestand als één geheel geformatteerd, statement voor statement. Dat is de snelste weg als je een heel .sql-bestand in één keer wil opschonen.

Voor

select a.id,a.name,b.qty from items a join stock b on a.id=b.item_id where b.qty<10;
select count(*) from items;

Na

select a.id
     , a.name
     , b.qty
  from items a
  join stock b
    on a.id = b.item_id
 where b.qty < 10;

select count(*)
  from items;

Veelgestelde vragen

Wat als mijn selectie geen volledige, geldige query is?

De formatter probeert er nog altijd zoveel mogelijk van te maken — hij crasht niet en verandert nooit tekst buiten de selectie. Voor een fragment zoals alleen een WHERE-clausule kan het resultaat net iets anders zijn dan wat je zou verwachten van een volledige SELECT, dus voor het beste resultaat selecteer je bij voorkeur een compleet statement.

Werkt dit ook zonder de toetscombinatie, via het menu?

Ja — Plugins → Datamodder SQL Formatter → Format SQL doet precies hetzelfde als de shortcut, inclusief het respecteren van je huidige selectie.