Formattatore SQL
Indenta una query SQL perché tu possa leggerla, interamente nel tuo browser. Non viene eseguito niente e non viene contattato nessun database.
Gira interamente nel tuo browser. Non viene caricato, registrato o salvato niente.
Incolla una query arrivata come un'unica riga lunga e leggila come si deve. La formattazione avviene nel tuo browser: l'istruzione, i nomi delle tabelle e il valore che sta nella clausola WHERE non lasciano mai la tua macchina.
Come funziona
L'istruzione viene divisa in pezzi — stringhe, commenti, nomi tra virgolette, numeri, parole, operatori — e poi riscritta con gli a capo e il rientro scelti in base a quella sequenza. Le clausole cominciano una riga, le condizioni si allineano sotto la clausola a cui appartengono, e una sottoquery viene rientrata dentro le sue parentesi.
Ogni pezzo viene riscritto esattamente come è arrivato. Possono cambiare solo gli spazi tra i pezzi e la forma maiuscola o minuscola delle parole che lo strumento riconosce, il che significa che l'istruzione che esce è l'istruzione che è entrata. Quella proprietà è affermata dai test invece di essere lasciata all'occhio.
Una parentesi che contiene un'istruzione propria viene spezzata su più righe; una chiamata di funzione, un elenco IN o una parentesi che serve solo a raggruppare un'espressione restano su una riga, perché spezzarle rende la query più alta senza renderla più chiara.
Esempi
| Caso | Dati inseriti | Risultato |
|---|---|---|
| Una query su una riga | select id, name from users where active = 1 order by name | SELECT id, name FROM users WHERE active = 1 ORDER BY name |
Domande frequenti
La mia query viene inviata da qualche parte?
No. Il formattatore è JavaScript che gira in questa pagina. Non viene caricato niente, non viene registrato niente e non viene salvato niente: puoi staccare la rete e lo strumento continua a funzionare.
Controlla se il mio SQL è valido?
No, e vale la pena dirlo chiaramente. Quello che fa è riorganizzare gli spazi. Non ha schema, né grammatica di dialetto, né database, quindi indenterà tranquillamente un'istruzione che nessun server accetterebbe. L'unica cosa che rifiuta è una stringa o un commento che non si chiudono, perché a quel punto non riesce più a distinguere il codice dal testo.
Quale dialetto capisce?
Riconosce gli stili di virgolettatura dei più comuni — apici singoli per le stringhe, e virgolette doppie, accenti gravi o parentesi quadre per i nomi — quindi non rovinerà MySQL, PostgreSQL, SQLite o SQL Server. Non controlla la grammatica del dialetto, perché non analizza.
A cosa serve l'opzione delle barre rovesciate?
MySQL tratta una barra rovesciata dentro una stringa come un escape, quindi 'it\'s' è un'unica stringa. Lo SQL standard — e PostgreSQL, SQLite, SQL Server e Oracle — non lo fa, quindi lì lo stesso testo è una stringa seguita da altro. Dalla sola query non si può sapere, e indovinare rovinerebbe un dialetto o l'altro, quindi è un interruttore. Lascialo spento a meno che tu non stia lavorando in MySQL.
Perché il nome della mia colonna ha cambiato maiuscole?
Perché si scrive come una parola chiave. L'opzione delle maiuscole tocca le parole che lo strumento riconosce, e non sa distinguere una colonna chiamata «key» dalla parola chiave. I nomi che vengono subito dopo TABLE, INTO, FROM, JOIN o UPDATE vengono lasciati stare, perché sono le posizioni in cui la forma di un nome può davvero contare. Se preferisci che non si muova niente, imposta l'opzione delle parole chiave su lasciarle come sono scritte, oppure metti il nome tra virgolette.
Da sapere
- Niente in questa pagina esegue SQL o si collega a un database. L'istruzione è testo, e viene trattata come testo.
- La disposizione è deterministica: la stessa istruzione con le stesse opzioni produce sempre lo stesso risultato, e formattare un'istruzione già formattata non cambia niente.
- Le espressioni CASE, i join, le sottoquery e gli elenchi di colonne di un CREATE TABLE hanno ciascuno la propria regola. Tutto quello che le regole non coprono resta sulla riga in cui capita invece di essere indovinato.