Skip to main content

Formatta le query SQL per renderle più leggibili.

Tutti i calcoli sono eseguiti localmente nel tuo browser. Nessun dato viene inviato al server.

I risultati hanno carattere informativo. Verificali con altre fonti.

Questo formattatore confronta parole chiave, quindi spezzerà una stringa che contiene la parola FROM

Divide la tua query sugli spazi e sulla punteggiatura e inserisce un a capo prima di ciascuna di ventitré parole chiave. Non ha idea di che cosa sia una stringa letterale. Formatta SELECT name FROM t WHERE label = 'order from stock' e il letterale torna come 'order\nfrom stock': un a capo dentro gli apici e una query che ora filtra qualcos'altro.

Come funziona

  • Comprime tutte le sequenze di spazi, poi divide la query in token su spazi, parentesi, virgole e punti e virgola.
  • Comincia una nuova riga prima di ciascuna delle ventitré parole chiave di clausola, senza distinguere maiuscole e minuscole.
  • Segue l'annidamento tramite le parentesi aperte e chiuse e rientra di due spazi per livello.
per ogni token:
  se il token è ')'  → rientro = max(0; rientro − 1)
  se il token è una parola chiave di clausola → emetti a capo + due spazi × rientro
  emetti il token invariato
  se il token è '('  → rientro = rientro + 1

Esempio pratico

Una query il cui testo contiene una parola chiave fra apici.

  1. input: SELECT name FROM t WHERE label = 'order from stock'
  2. SELECT, FROM e WHERE aprono ciascuno una nuova riga, come previsto
  3. anche la parola from dentro gli apici viene riconosciuta, perché gli apici sono invisibili al confronto
  4. l'output mette un a capo fra 'order e from stock'
  5. il letterale non è più la stessa stringa di prima

Tre a capo voluti e uno che cambia il significato della query. Tutto ciò che sta fuori dalle stringhe viene formattato correttamente; tutto ciò che sta dentro è a rischio.

Come leggere il risultato

  • Controlla ogni query che contenga testo fra apici prima di usare il risultato. I commenti presentano lo stesso pericolo: anche una parola chiave dentro un commento riceve un a capo, e in un commento su una sola riga quell'a capo può spingere il resto del commento su una riga di SQL attiva.
  • Il rientro segue soltanto le parentesi, quindi rispecchia la profondità di annidamento e non la struttura delle clausole. Una query lunga e piatta senza parentesi esce del tutto priva di rientri per quante clausole abbia: corretto per questa regola e spesso non ciò che volevi.
  • L'elenco delle parole chiave è fisso e generico. La sintassi propria di un dialetto — funzioni finestra, espressioni di tabella comuni, estensioni del fornitore, MERGE — non vi compare e resterà in riga anziché ottenerne una propria.
  • Viene aggiunto solo spazio bianco. I token sono emessi esattamente come li hai scritti, quindi il tuo uso delle maiuscole si conserva e nessuna parola chiave viene riscritta: lo strumento cambia l'impaginazione, non il testo.

Domande frequenti

È sicuro usarlo su query di produzione?
Formatta prima e leggi l'output prima di usarlo. Lo strumento non riscrive mai i tuoi token, ma può inserire un a capo dentro una stringa fra apici o un commento, e in entrambi i casi l'SQL risultante significa qualcosa di diverso da ciò che hai incollato.
Perché la mia query annidata non è rientrata?
Il rientro è guidato solo dalle parentesi. Una sottoquery racchiusa fra parentesi rientra; una sequenza di join e clausole senza parentesi no, perché lo strumento non ha un modello della struttura delle clausole su cui allinearsi.