SQL-Formatierer
Formatieren Sie SQL-Abfragen mit jeder Klausel auf ihrer eigenen Zeile, eingerückten Spaltenlisten und verschachtelten Unterabfragen. Schlüsselwörter innerhalb von Zeichenkettenliteralen bleiben unangetastet, etwas, das naive Formatierer falsch machen.
- Dateien verlassen niemals Ihr Gerät
- Kostenlos, keine Anmeldung
- Keine Wasserzeichen
- Funktioniert nach dem Laden auch offline
So verwenden Sie SQL-Formatierer
- 1
Abfrage einfügen
Eine lange Zeile, oder etwas bereits halb formatiertes.
- 2
Ihre Präferenzen festlegen
Einrückungsgröße, und ob Schlüsselwörter großgeschrieben werden.
- 3
Ergebnis kopieren
Bereit, zurück in Ihren Editor oder Ihre Migration eingefügt zu werden.
Der spezifische Fehler, der regex-basierte SQL-Formatierer stolpern lässt
Ein Formatierer, der Schlüsselwörter durch Abgleichen ganzer Wörter mit einem regulären Ausdruck großschreibt, hat keine Möglichkeit zu wissen, ob ein gegebenes Vorkommen von „order" das SQL-Schlüsselwort `ORDER` (wie in `ORDER BY`) oder ein Zeichenkettenliteralwert ist, der zufällig dieses Wort enthält — eine Abfrage, die Zeilen mit `WHERE description = 'the order from stock'` filtert, hat das Wort „order" innerhalb einer Zeichenkette in Anführungszeichen, wo es überhaupt nicht als Schlüsselwort fungiert. Ein naiver Formatierer schreibt jedes übereinstimmende Wort ohne Rücksicht auf den Kontext groß und verdirbt den Zeichenkettenliteralwert zu `'the ORDER FROM stock'`, wodurch still geändert wird, was die Abfrage tatsächlich filtert. Die Abfrage korrekt zu tokenisieren — die Grenzen von Zeichenketten in Anführungszeichen zu erkennen, bevor entschieden wird, was als Schlüsselwort zählt — verhindert das, und es ist genau die Art von Fehler, der nur bei echten Daten mit Wörtern auftaucht, die zufällig SQL-Schlüsselwörtern entsprechen, daher leicht beim Testen mit einfachen Beispielabfragen zu übersehen.
Was „formatiert, aber analysiert nicht" in der Praxis bedeutet
Dieses Tool erkennt die gemeinsame Klauselstruktur zwischen PostgreSQL, MySQL, SQL Server, SQLite und Oracle — SELECT, FROM, WHERE, JOIN, GROUP BY, ORDER BY und ihre Verwandten — gut genug, um jede Klausel auf ihrer eigenen Zeile einzurücken und Unterabfragen korrekt zu verschachteln. Es baut kein vollständiges Verständnis der gesamten Grammatik einer bestimmten Datenbank auf, einschließlich anbieterspezifischer Erweiterungen wie PostgreSQLs Array-Syntax oder SQL Servers Platzierung der `TOP`-Klausel. Die praktische Konsequenz ist, dass dialektspezifische Syntax unangetastet durch den Formatierer läuft, statt einen Fehler zu verursachen, aber sie erhält auch nicht dieselbe sorgfältige Einrückung wie die gemeinsamen Klauseln — ein vernünftiger Tausch, um fünf Dialekte mit einem einzigen Formatierer zu unterstützen, statt ein separates Tool pro Datenbank-Engine zu benötigen.
Warum Formatieren nicht ändern kann, was eine Abfrage tut
SQL-Schlüsselwörter unterscheiden nach der Sprachspezifikation selbst nicht zwischen Groß- und Kleinschreibung — `SELECT`, `Select` und `select` sind für jede SQL-Engine identisch — was genau das ist, was ihre Groß- oder Kleinschreibung zu einer rein kosmetischen Operation ohne jedes Risiko macht, das Verhalten zu ändern. Dasselbe gilt für Leerzeichen und Zeilenumbrüche, die dieser Formatierer hinzufügt: Eine über zwölf eingerückte Zeilen verteilte Abfrage läuft identisch zu derselben in einer Zeile zusammengedrängten Abfrage. Nichts an der Formatierung berührt die echten Tokens, die bestimmen, welche Tabellen gelesen werden, welche Bedingungen Zeilen filtern, oder welche Werte eingefügt werden — nur wie dieselbe logische Abfrage visuell für einen Menschen angeordnet wird, der sie danach liest.
Eine lange Migration oder generierte Abfrage lesen
Eine von einem ORM generierte, aus einer grafischen Datenbankoberfläche exportierte, oder während einer eiligen Migration als eine einzige lange Zeile geschriebene Abfrage ist oft funktional korrekt, aber für eine Person wirklich schwer zu überprüfen, wie sie geschrieben ist — eine Abfrage mit fünfzehn Joins ohne Zeilenumbrüche erschwert zu sehen, welche Bedingungen zu welchem Join gehören, oder ob eine WHERE-Klausel die richtige Tabelle filtert. Sie mit jeder Klausel und jedem Join auf seiner eigenen Zeile neu zu formatieren, eingerückt, um die echte Struktur der Abfrage widerzuspiegeln, ist oft der schnellste Weg, wirklich zu verstehen, was eine lange generierte Abfrage tut, bevor sie in einem Code-Review genehmigt wird oder debuggt wird, warum sie die falschen Zeilen zurückgibt.
Häufig gestellte Fragen
Ändert das, was meine Abfrage tut?
Nein. Nur Leerzeichen und die Groß-/Kleinschreibung von Schlüsselwörtern ändern sich — keine Klausel wird neu geordnet und kein Token umgeschrieben. SQL-Schlüsselwörter unterscheiden nicht zwischen Groß- und Kleinschreibung, daher kann Großschreiben das Verhalten nicht ändern.
Was passiert mit Text in Anführungszeichen?
Er wird exakt so gelassen, wie geschrieben. Der Formatierer tokenisiert die Abfrage, bevor er irgendetwas antastet, daher behält eine Zeichenkette wie 'check the order from stock' ihr „order" und „from" in Kleinbuchstaben, statt als Schlüsselwörter großgeschrieben zu werden. Regex-basierte Formatierer machen das routinemäßig falsch.
Welche SQL-Dialekte funktionieren?
Die gemeinsame Klauselstruktur, die PostgreSQL, MySQL, SQL Server, SQLite und Oracle teilen. Es formatiert statt zu analysieren, daher passiert dialektspezifische Syntax unangetastet durch, statt einen Fehler zu verursachen — wird aber auch nicht speziell eingerückt.
Werden meine Abfragen irgendwohin gesendet?
Nein. Die Formatierung geschieht in Ihrem Browser. Das ist wichtig, weil echte Abfragen Tabellennamen, Spaltennamen und manchmal literale Kundendaten tragen — nichts davon sollte auf dem Server eines Fremden landen.
Häufige Aufgaben für SQL-Formatierer
Das könnte Sie auch interessieren
JSON-Formatierer
JSON sofort formatieren, validieren und minifizieren
JavaScript-Formatierer
JS und TypeScript mit einem echten Parser formatieren
XML-Formatierer
XML einrücken und unausgeglichene Tags erkennen
Base64-Encoder und -Decoder
Base64 und Base64URL kodieren und dekodieren
CSS-Formatierer
Stylesheets verschönern oder minifizieren
CSS-Minifizierer
Stylesheets mit einem echten CSS-bewussten Minifizierer verkleinern
Hash-Generator
MD5, SHA-1, SHA-256, SHA-384 und SHA-512
HTML-Formatierer
HTML korrekt verschönern und einrücken