SQL-formatter
Laat een SQL-query inspringen zodat je hem kunt lezen, volledig in je browser. Er wordt niets uitgevoerd en er wordt geen contact gemaakt met een database.
Draait volledig in je browser. Er wordt niets geüpload, gelogd of opgeslagen.
Plak een query die als één lange regel is binnengekomen en lees hem zoals het hoort. De opmaak gebeurt in je browser: het statement, de tabelnamen en de waarde in de WHERE-clausule verlaten je computer nooit.
Hoe het werkt
Het statement wordt in stukken gesplitst — strings, commentaar, namen tussen aanhalingstekens, getallen, woorden, operatoren — en daarna opnieuw geschreven, met regeleinden en inspringing gekozen op basis van die reeks. Clausules beginnen op een nieuwe regel, voorwaarden worden uitgelijnd onder de clausule waar ze bij horen, en een subquery springt in binnen zijn haakjes.
Elk stuk wordt precies zo teruggeschreven als het binnenkwam. Alleen de witruimte ertussen en de hoofd- of kleine letters van de woorden die de tool herkent kunnen veranderen, en dat betekent dat het statement dat eruit komt het statement is dat erin ging. Die eigenschap wordt door de tests vastgelegd in plaats van aan inspectie overgelaten.
Haakjes met een eigen statement erin worden over meerdere regels verdeeld; een functieaanroep, een IN-lijst of haakjes die alleen een expressie groeperen blijven op één regel, want ze opsplitsen maakt de query hoger zonder hem duidelijker te maken.
Voorbeelden
| Geval | Invoer | Resultaat |
|---|---|---|
| Een query op één regel | select id, name from users where active = 1 order by name | SELECT id, name FROM users WHERE active = 1 ORDER BY name |
Veelgestelde vragen
Wordt mijn query ergens naartoe gestuurd?
Nee. De formatter is JavaScript dat op deze pagina draait. Er wordt niets geüpload, niets gelogd en niets opgeslagen: je kunt de netwerkverbinding verbreken en de tool blijft werken.
Controleert hij of mijn SQL geldig is?
Nee, en dat moet duidelijk zijn. Wat hij doet is witruimte herschikken. Hij heeft geen schema, geen dialectgrammatica en geen database, dus hij laat net zo vrolijk een statement inspringen dat geen enkele server zou accepteren. Het enige wat hij weigert is een string of commentaar die niet wordt afgesloten, omdat hij dan code niet meer van tekst kan onderscheiden.
Welk dialect begrijpt hij?
Hij herkent de aanhalingsstijlen van de gangbaarste — enkele aanhalingstekens voor strings, en dubbele aanhalingstekens, backticks of vierkante haken voor namen — dus hij zal MySQL, PostgreSQL, SQLite en SQL Server niet verminken. Hij controleert de grammatica van het dialect niet, want hij parseert niet.
Waar is de optie voor backslashes voor?
MySQL behandelt een backslash in een string als escape, dus 'it\'s' is één string. Standaard-SQL — en PostgreSQL, SQLite, SQL Server en Oracle — doet dat niet, dus daar is dezelfde tekst een string gevolgd door iets anders. Dat valt niet uit de query alleen af te leiden, en gokken zou het ene of het andere dialect beschadigen, dus het is een schakelaar. Laat hem uit, tenzij je met MySQL werkt.
Waarom zijn de hoofdletters van mijn kolomnaam veranderd?
Omdat hij hetzelfde gespeld wordt als een sleutelwoord. De optie voor hoofd- en kleine letters raakt de woorden die de tool herkent, en hij kan een kolom met de naam “key” niet onderscheiden van het sleutelwoord. Namen die direct na TABLE, INTO, FROM, JOIN of UPDATE komen, blijven zoals ze zijn, want dat zijn de posities waar de hoofdletters van een naam wel kunnen uitmaken. Wil je dat er niets verandert, zet de optie voor sleutelwoorden dan op laten zoals geschreven, of zet de naam tussen aanhalingstekens.
Goed om te weten
- Niets op deze pagina voert SQL uit of maakt verbinding met een database. Het statement is tekst, en wordt als tekst behandeld.
- De opmaak is deterministisch: hetzelfde statement met dezelfde opties geeft altijd dezelfde uitvoer, en een al opgemaakt statement opnieuw opmaken verandert niets.
- CASE-expressies, joins, subquery's en de kolomlijsten van een CREATE TABLE hebben elk hun eigen regel. Alles wat de regels niet dekken, blijft op de regel waar het staat in plaats van dat ernaar wordt gegokt.