Dialekt wählen, Abfrage einfügen
Wähle zuerst unter „Dialekt“ die Datenbank, auf der die Abfrage laufen soll. Zur Auswahl stehen „Standard-SQL“, „MySQL“, „PostgreSQL“, „SQLite“, „T-SQL (SQL Server)“ und „BigQuery“. Dann kommt die Abfrage ins Feld „Eingabe“, und darunter stellst du drei Dinge ein.
- Groß-/Kleinschreibung der Schlüsselwörter: „Großbuchstaben (SELECT)“, „Kleinbuchstaben (select)“ oder „Wie eingegeben“.
- Einrückung: „2 Leerzeichen“, „4 Leerzeichen“ oder „Tabulator“.
- Leerzeilen zwischen Abfragen: wie viele Leerzeilen zwischen Abfragen stehen, die durch ein Semikolon (;) getrennt sind. Möglich sind 0 bis 5, voreingestellt ist 1.
So sieht die folgende Zeile mit Standard-SQL, Großbuchstaben und 2 Leerzeichen aus:
select u.id, count(o.id) as orders from users u left join orders o on o.user_id = u.id where u.created_at >= '2026-01-01' group by u.id having count(o.id) > 3 order by orders desc
SELECT
u.id,
count(o.id) AS orders
FROM
users u
LEFT JOIN orders o ON o.user_id = u.id
WHERE
u.created_at >= '2026-01-01'
GROUP BY
u.id
HAVING
count(o.id) > 3
ORDER BY
orders DESC
Im Feld „Ausgabe“ erscheinen Schlüsselwörter fett, Strings und Zahlen farbig und Kommentare kursiv. Diese Hervorhebung schaut nur auf die Gestalt der Wörter. Eine Spalte, die wie ein reserviertes Wort heißt, etwa default oder index, wird deshalb fett wie ein Schlüsselwort dargestellt, solange sie nicht in Anführungszeichen steht. Ist das Ergebnis länger als 200.000 Zeichen, steht dort „Großes Ergebnis, daher ohne Hervorhebung angezeigt“, und du siehst nur den reinen Text. „Zeilen“ und „Größe“ unter dem Ergebnis beziehen sich auf das formatierte Ergebnis.
Fügst du mehrere Abfragen auf einmal ein, wird jede für sich formatiert, getrennt wird am Semikolon. Fehlt es bei der letzten Abfrage, wird im Ergebnis auch keines ergänzt.
Was die Groß-/Kleinschreibung der Schlüsselwörter erfasst
Die Einstellung „Groß-/Kleinschreibung der Schlüsselwörter“ gilt nur für reservierte Wörter wie select, from, as und join. Funktionsnamen und Datentypen, Tabellen- und Spaltennamen sowie der Inhalt von Strings bleiben so, wie du sie eingegeben hast.
- Mit „Großbuchstaben (SELECT)“ werden in
select count(*), cast(x as int) from tnurSELECT,ASundFROMgroßgeschrieben,count(*)undintbleiben klein. - Mit „Kleinbuchstaben (select)“ werden in
SELECT Now() FROM tdie Wörterselectundfromkleingeschrieben,Now()bleibt unverändert. - Was in
where name = 'select from'zwischen den Anführungszeichen steht, ändert sich bei keiner Einstellung.
Verlangt die Konvention in deinem Team, dass auch COUNT und INT großgeschrieben werden, musst du das von Hand nachziehen.
Was passiert, wenn der Dialekt nicht passt
Anführungszeichen und Platzhalter schreibt jede Datenbank anders. Mit dem falschen Dialekt lässt sich deshalb auch eine Abfrage, die problemlos läuft, nicht parsen, und es erscheint ein Fehler. Die Tabelle zeigt, was mit derselben Eingabe in jedem der sechs Dialekte passiert ist.
| Eingabe | Fehler in diesen Dialekten | Formatiert in diesen Dialekten |
|---|---|---|
select [a] from [t] |
Standard-SQL, MySQL (Zeile 1, Spalte 8) | PostgreSQL, SQLite, T-SQL, BigQuery |
select `a` from `t` |
PostgreSQL, T-SQL (Zeile 1, Spalte 8) | Standard-SQL, MySQL, SQLite, BigQuery |
select a::int from t |
Standard-SQL, MySQL, SQLite, BigQuery (Zeile 1, Spalte 9) | PostgreSQL, T-SQL |
select * from t where a = $1 |
Standard-SQL, SQLite, T-SQL, BigQuery (Zeile 1, Spalte 27) | MySQL, PostgreSQL |
Auch ohne Fehler kann das Ergebnis leicht abweichen. Formatierst du select top 5 a from t mit „T-SQL (SQL Server)“, wird TOP großgeschrieben. In den anderen fünf Dialekten gilt top nicht als Schlüsselwort und bleibt klein. Umgekehrt bleibt limit 5 nur in T-SQL klein. Statt den Dialekt so lange zu wechseln, bis der Fehler verschwindet, wählst du besser gleich die Datenbank, die du tatsächlich verwendest.
Kein Fehler heißt nicht: korrektes SQL
Das Tool führt die Abfrage nicht aus und prüft auch die Syntax nicht zu Ende. Es zerlegt den Text in Wörter, sucht die Grenzen der Klauseln und richtet die Zeilen daran aus. Die meisten fehlerhaften Abfragen rutschen deshalb einfach durch.
selct * form users(Tippfehler) kommt ohne Fehler als eine einzige Zeile wieder heraus. Dass nichts in Klauseln aufgeteilt wurde, ist der einzige Hinweis.select * from users where(Bedingung fehlt) wird so formatiert, dass es mitWHEREendet.
Als Fehler erkannt werden vor allem Klammern und Anführungszeichen ohne Gegenstück sowie Zeichen, die es im gewählten Dialekt nicht gibt. Dann erscheint eine Meldung wie „Dieses SQL lässt sich nicht parsen. Prüfe die Stelle bei Zeile 1, Spalte 24.“, dazu die betroffene Zeile und eine ^-Markierung.
| Eingabe (Standard-SQL) | Angezeigte Position | Ursache |
|---|---|---|
select * from (select 1 |
Zeile 1, Spalte 24 (Ende der Eingabe) | Klammer nicht geschlossen |
select * from users) |
Zeile 1, Spalte 20 | schließende Klammer ohne öffnende |
select 'abc |
Zeile 1, Spalte 8 | Anführungszeichen nicht geschlossen |
Bei einer nicht geschlossenen Klammer zeigt die Markierung auf das Ende der Eingabe. Such die öffnende Klammer ohne Gegenstück also nicht an der markierten Stelle, sondern davor.
Die Formatierungs-Engine wird erst bei der ersten Eingabe geladen
Das Formatieren übernimmt die quelloffene Bibliothek sql-formatter. Weil sie groß ist, wird sie nicht beim Öffnen der Seite geladen, sondern in dem Moment, in dem du zum ersten Mal eine Abfrage eingibst. So lange steht im Ergebnisfeld „Wird formatiert …“. Geladen wird nur der Code der Engine, deine Abfrage ist nicht Teil dieser Anfrage. Ist die Internetverbindung nach dem Öffnen der Seite abgerissen und du gibst dann zum ersten Mal etwas ein, erscheint „Die Formatierungs-Engine konnte nicht geladen werden. Prüfe deine Internetverbindung und lade die Seite neu.“
Eine Funktion, die alles auf eine Zeile staucht, gibt es nicht. Die Bibliothek kann nur in Zeilen umbrechen und ausrichten, und Leerraum auf eigene Faust zu löschen würde riskieren, auch Leerzeichen in Strings und Kommentaren zu erwischen. Deshalb fehlt sie. Willst du weniger Zeilen, bleibt dir nur, „Leerzeilen zwischen Abfragen“ auf 0 zu stellen.
