SQL-Formatierer

Eine SQL-Abfrage so einrücken, dass Sie sie lesen können, vollständig in Ihrem Browser. Es wird nichts ausgeführt und keine Datenbank kontaktiert.

Läuft vollständig in Ihrem Browser. Nichts wird hochgeladen, protokolliert oder gespeichert.

Fügen Sie eine Abfrage ein, die als eine lange Zeile ankam, und lesen Sie sie ordentlich. Formatiert wird in Ihrem Browser: Die Anweisung, die Tabellennamen und der Wert, der in der WHERE-Klausel steht, verlassen Ihren Rechner nie.

Wie es funktioniert

Die Anweisung wird in Stücke zerlegt — Zeichenketten, Kommentare, gequotete Namen, Zahlen, Wörter, Operatoren — und dann mit Zeilenumbrüchen und einer Einrückung wieder ausgegeben, die aus dieser Folge gewählt werden. Klauseln beginnen eine Zeile, Bedingungen richten sich unter der Klausel aus, zu der sie gehören, und eine Unterabfrage wird in ihren Klammern eingerückt.

Jedes Stück wird genau so zurückgeschrieben, wie es angekommen ist. Nur die Leerzeichen dazwischen und die Groß-/Kleinschreibung der Wörter, die das Tool erkennt, können sich ändern — was heißt, dass die Anweisung, die herauskommt, die Anweisung ist, die hineinging. Diese Eigenschaft wird von den Tests behauptet und nicht der Sichtprüfung überlassen.

Eine Klammer, die eine eigene Anweisung enthält, wird über Zeilen gebrochen; ein Funktionsaufruf, eine IN-Liste oder eine Klammer, die nur einen Ausdruck gruppiert, bleibt auf einer Zeile, denn diese zu brechen macht eine Abfrage höher, ohne sie klarer zu machen.

Beispiele

Fall Eingabe Ergebnis
Eine Abfrage auf einer Zeile select id, name from users where active = 1 order by name SELECT id, name FROM users WHERE active = 1 ORDER BY name

Häufige Fragen

Wird meine Abfrage irgendwohin gesendet?

Nein. Der Formatierer ist JavaScript, das in dieser Seite läuft. Nichts wird hochgeladen, nichts protokolliert und nichts gespeichert — Sie können Ihre Netzwerkverbindung abschalten, und das Tool arbeitet weiter.

Prüft es, ob mein SQL gültig ist?

Nein, und das sollte klar gesagt sein. Es ordnet Leerraum um. Es hat kein Schema, keine Dialektgrammatik und keine Datenbank, es rückt also bereitwillig eine Anweisung ein, die kein Server annehmen würde. Abgelehnt wird nur eine Zeichenkette oder ein Kommentar, die nie geschlossen werden, denn danach kann es Code nicht mehr von Text unterscheiden.

Welchen Dialekt versteht es?

Es erkennt die Anführungsstile der gebräuchlichen — einfache Anführungszeichen für Zeichenketten, doppelte, Backticks oder eckige Klammern für Namen —, es verstümmelt also weder MySQL noch PostgreSQL, SQLite oder SQL Server. Die Dialektgrammatik prüft es nicht, denn es parst nicht.

Wofür ist die Rückwärtsschrägstrich-Option?

MySQL behandelt einen Rückwärtsschrägstrich in einer Zeichenkette als Maskierung, 'it\'s' ist dort also eine Zeichenkette. Der SQL-Standard — und PostgreSQL, SQLite, SQL Server und Oracle — tut das nicht, dort ist derselbe Text eine Zeichenkette gefolgt von etwas anderem. Aus der Abfrage allein lässt sich das nicht erkennen, und zu raten würde den einen oder den anderen Dialekt beschädigen, daher ist es ein Schalter. Lassen Sie ihn aus, sofern Sie nicht mit MySQL arbeiten.

Warum hat sich die Schreibweise meines Spaltennamens geändert?

Weil er wie ein Schlüsselwort geschrieben ist. Die Schreibweisen-Option fasst Wörter an, die das Tool erkennt, und es kann eine Spalte namens „key“ nicht vom Schlüsselwort unterscheiden. Namen, die direkt nach TABLE, INTO, FROM, JOIN oder UPDATE kommen, bleiben unangetastet, denn das sind die Stellen, an denen die Schreibweise eines Namens tatsächlich zählen kann. Wenn Ihnen lieber ist, dass sich nichts bewegt, stellen Sie die Schlüsselwort-Option auf „so lassen, wie geschrieben“ oder quoten Sie den Namen.

Gut zu wissen

  • Nichts auf dieser Seite führt SQL aus oder verbindet sich mit einer Datenbank. Die Anweisung ist Text, und sie wird als Text behandelt.
  • Die Disposition ist deterministisch: Dieselbe Anweisung und dieselben Optionen ergeben immer dieselbe Ausgabe, und eine bereits formatierte Anweisung zu formatieren ändert nichts.
  • CASE-Ausdrücke, Joins, Unterabfragen und Spaltenlisten von CREATE TABLE haben je eine Regel. Was die Regeln nicht abdecken, bleibt auf der Zeile, auf der es landet, statt erraten zu werden.

Alle Code Tools