Formatieren Sie SQL-Abfragen für bessere Lesbarkeit.
Die Ergebnisse dienen zur Information. Überprüfen Sie sie anhand anderer Quellen.
Dieser Formatierer gleicht Schlüsselwörter ab und zerbricht damit eine Zeichenkette, die das Wort FROM enthält
Er teilt Ihre Abfrage an Leerzeichen und Satzzeichen und fügt vor jedem von dreiundzwanzig Schlüsselwörtern einen Zeilenumbruch ein. Was eine Zeichenkette ist, weiß er nicht. Formatieren Sie SELECT name FROM t WHERE label = 'order from stock', und das Literal kommt als 'order\nfrom stock' zurück — ein Umbruch innerhalb der Anführungszeichen und eine Abfrage, die nun etwas anderes trifft.
So wird gerechnet
- Zieht alle Folgen von Leerraum zusammen und teilt die Abfrage dann an Leerzeichen, Klammern, Kommata und Semikola in Token.
- Beginnt vor jedem der dreiundzwanzig Klausel-Schlüsselwörter eine neue Zeile, ohne auf Groß- und Kleinschreibung zu achten.
- Verfolgt die Verschachtelung über öffnende und schließende Klammern und rückt je Ebene um zwei Leerzeichen ein.
für jedes Token:
ist das Token ')' → Einzug = max(0; Einzug − 1)
ist das Token ein Klausel-Schlüsselwort → Zeilenumbruch + zwei Leerzeichen × Einzug ausgeben
Token unverändert ausgeben
ist das Token '(' → Einzug = Einzug + 1Rechenbeispiel
Eine Abfrage, deren Text ein Schlüsselwort in Anführungszeichen enthält.
- Eingabe: SELECT name FROM t WHERE label = 'order from stock'
- SELECT, FROM und WHERE beginnen jeweils eine neue Zeile, wie beabsichtigt
- das Wort from in den Anführungszeichen wird ebenfalls getroffen, denn Anführungszeichen sind für den Abgleich unsichtbar
- die Ausgabe setzt einen Umbruch zwischen 'order und from stock'
- das Literal ist nicht mehr dieselbe Zeichenkette wie zuvor
Drei beabsichtigte Umbrüche und einer, der die Bedeutung der Abfrage verändert. Alles außerhalb von Zeichenketten wird korrekt formatiert; alles darin ist gefährdet.
Das Ergebnis lesen
- Prüfen Sie jede Abfrage mit Text in Anführungszeichen, bevor Sie das Ergebnis verwenden. Kommentare bergen dieselbe Gefahr — auch ein Schlüsselwort im Kommentar erhält einen Umbruch, und bei einem einzeiligen Kommentar kann dieser Umbruch den Rest des Kommentars in eine wirksame SQL-Zeile schieben.
- Der Einzug folgt allein den Klammern und bildet damit die Verschachtelungstiefe ab, nicht die Klauselstruktur. Eine lange flache Abfrage ohne Klammern kommt völlig ohne Einzug heraus, gleich wie viele Klauseln sie hat — für diese Regel richtig und oft nicht das Gewünschte.
- Die Schlüsselwortliste ist fest und allgemein. Dialektspezifische Syntax — Fensterfunktionen, Common Table Expressions, Herstellererweiterungen, MERGE — steht nicht darauf und bleibt in der Zeile, statt eine eigene zu bekommen.
- Hinzugefügt wird ausschließlich Leerraum. Token werden exakt so ausgegeben, wie Sie sie getippt haben, Ihre Schreibweise bleibt also erhalten und kein Schlüsselwort wird umgeschrieben; das Werkzeug ändert das Layout, nicht den Text.
Häufige Fragen
- Kann ich das gefahrlos auf Produktivabfragen anwenden?
- Erst formatieren, dann die Ausgabe lesen, bevor Sie sie verwenden. Das Werkzeug schreibt Ihre Token nie um, kann aber einen Zeilenumbruch in eine Zeichenkette oder einen Kommentar setzen — in beiden Fällen bedeutet das entstandene SQL etwas anderes als das Eingefügte.
- Warum ist meine verschachtelte Abfrage nicht eingerückt?
- Der Einzug wird allein von Klammern gesteuert. Eine in Klammern gefasste Unterabfrage wird eingerückt; eine Folge von Verknüpfungen und Klauseln ohne Klammern nicht, denn das Werkzeug hat kein Modell der Klauselstruktur, an dem es sich ausrichten könnte.