Es formatiert beim Tippen — Sie müssen nichts drücken. Ihre Abfrage bleibt auf dieser Seite, in Zeichenketten und Kommentare wird nie hineingesehen, und Bezeichner behalten genau die Schreibweise, die Sie gewählt haben.
Über das Formatieren von SQL
SQL kommt als eine einzige riesige Zeile an. Aus dem Log eines ORM, aus einem Fehlerbericht, aus jemandes Zwischenablage. Es läuft einwandfrei und ist unmöglich zu lesen, und die Stelle, die Sie suchen, steckt irgendwo mittendrin.
Einfügen, und es kommt ausgelegt zurück — eine Klausel pro Zeile, Spalten unter SELECT eingerückt, Joins und ihre ON-Bedingungen untereinander, sodass die Form der Abfrage auf einen Blick sichtbar wird.
So wird es benutzt
- Fügen Sie Ihr SQL in das linke Feld ein — die formatierte, farbige Fassung erscheint rechts, während Sie tippen
- Passen Sie Einrückung, Schreibweise der Schlüsselwörter und Kommaposition an, wenn Sie mögen — das Ergebnis aktualisiert sich sofort
- Kopieren Sie es oder laden Sie es als .sql-Datei herunter
- Wechseln Sie zu Minifizieren, um alles wieder auf eine Zeile zu bringen; dieser Modus bleibt beim Weitertippen erhalten
Es gibt keinen Knopf zum Formatieren. Die einzigen zwei Knöpfe, die das Ergebnis ändern, sind
Formatieren und Minifizieren — sie wählen aus, welche der beiden Fassungen Sie sehen.
Die Farbe stammt aus derselben Lesung der Abfrage
Die Ausgabe wird eingefärbt, indem derselbe Tokenizer, der sie ausgelegt hat, noch einmal
über den fertigen Text läuft — Schlüsselwörter cyan, Zeichenketten gelb, Zahlen orange,
Kommentare grau, Satzzeichen pink, und Ihre eigenen Tabellen- und Spaltennamen schlicht, damit
sie sich vom SQL darum herum abheben.
Das ist mehr als Optik. Weil eine einzige Lesung der Abfrage sowohl das Layout als auch die
Farbe erzeugt, können die beiden nie widersprechen: Was als Zeichenkette eingefärbt ist, hat
der Formatierer auch genau als Zeichenkette behandelt. Ist irgendwo ein Anführungszeichen
unpaarig, läuft die Farbe weiter und zeigt Ihnen die Stelle — meist schneller, als man sie mit
dem Auge findet.
Kopieren und Herunterladen geben den reinen Text heraus, nie die farbige Auszeichnung.
Zwei Dinge, bei denen es vorsichtig ist
Die meisten schnellen SQL-Formatierer arbeiten mit regulären Ausdrücken, und genau an diesen beiden Punkten scheitert dieser Ansatz.
- In Zeichenketten und Kommentare wird nie hineingesehen. Eine Abfrage mit WHERE note = 'from a, b' enthält ein Schlüsselwort, ein Komma und ein Leerzeichen innerhalb eines Zeichenkettenliterals. Ein Regex-Formatierer bricht die Zeile dort um und verändert, was die Abfrage tut. Dieser hier liest die Abfrage zuerst in Token ein, sodass das Innere eines Literals genau so herauskommt, wie es hineinging — bis hin zu den Leerzeichen
- Bezeichner behalten Ihre Schreibweise. Nur Schlüsselwörter werden groß- oder kleingeschrieben. Auf einem Server, der Groß- und Kleinschreibung unterscheidet, sind userId und userid verschiedene Spalten, und ein Formatierer, der sie „aufräumt“, hat die Abfrage kaputt gemacht, damit sie hübscher aussieht
Alle Zitierweisen werden verstanden: 'Zeichenketten' mit ''-Escapes, "zitierte Bezeichner", MySQL- Backticks , SQL-Server-[Klammern] und PostgreSQL-$$ Dollar-Quoting $$.
Die Einstellungen
- Einrücken mit — 4 Leerzeichen, 2 Leerzeichen oder Tabulator
- Schlüsselwörter — GROSSSCHREIBUNG, kleinschreibung oder genau so, wie Sie sie geschrieben haben
- Kommas — am Zeilenende oder führend am Zeilenanfang, falls das Ihr Hausstil ist
Minifizieren
Minifizieren fasst die Abfrage wieder zu einer einzigen Zeile zusammen. Ein Leerzeichen bleibt nur dort stehen, wo sein Wegfall die Bedeutung ändern oder ein neues Token erzeugen würde — das Ergebnis ist also so kurz, wie es gefahrlos sein kann.
Zeilenkommentare fallen weg, weil -- so einer den Rest der Zeile verschlucken würde, sobald alles auf einer Zeile steht. Blockkommentare bleiben genau so erhalten, wie sie geschrieben sind.
Wofür es genutzt wird
- Eine Abfrage aus einem ORM-Log lesbar machen
- SQL aufräumen, bevor es in einen Pull Request oder eine Migration kommt
- Eine lange Abfrage verstehen, die jemand anderes geschrieben hat
- Eine Abfrage aus einem Fehlerbericht in eine brauchbare Form bringen
- Eine Abfrage für eine Konfigurationsdatei oder einen Shell-Befehl auf eine Zeile bringen
- Den Stil eines Ordners voller .sql-Dateien vereinheitlichen, bevor sie eingecheckt werden
Gut zu wissen
- Ihre Abfrage bleibt auf dieser Seite — nichts wird irgendwohin gesendet. Praktisch, wenn echte Tabellen- und Spaltennamen darin stehen
- Dies legt SQL aus; es prüft nicht, ob es gültig ist. Eine Abfrage mit Syntaxfehler wird so gut wie möglich formatiert, nicht abgelehnt
- Dialektspezifische Zitierweisen werden unterstützt, aber es wird nicht zwischen Dialekten umgeschrieben
- Sehr große Abfragen sind kein Problem — es ist einfache Arbeit auf Ihrem eigenen Rechner
- Funktioniert in jedem Browser, auch auf dem Handy
Verwandte Werkzeuge
- JSON-Formatierer — dieselbe Aufgabe für JSON
- CSV zu JSON — die Daten umwandeln, die die Abfrage geliefert hat
- Suchen und Ersetzen in vielen Dateien — einen Tabellennamen in einem ganzen Ordner .sql-Dateien ändern
- Text-Vergleich — zwei Fassungen einer Abfrage vergleichen
- Regex-Tester — das Muster bauen, bevor Sie damit suchen