SQL-formatter
Plak een SQL-statement van één regel dat is gekopieerd uit een logbestand of een ORM; de formatter splitst het op in ingesprongen clausules met een consistente schrijfwijze van sleutelwoorden, regeleinden vóór SELECT, FROM, WHERE en GROUP BY, en uitgelijnde kolommen in de projectie. Ondersteunt de dialecten MySQL, PostgreSQL, SQL Server, Oracle, SQLite en BigQuery; elk heeft licht verschillende sleutelwoorden en gereserveerde woorden.
Hoe het opmaken werkt
-
1
Plak uw SQL
Een blok op één regel, geminificeerde uitvoer van Hibernate, wat dan ook. Meerdere statements gescheiden door `;` worden allemaal opgemaakt.
-
2
Kies dialect en stijl
Het dialect bepaalt de lijst met sleutelwoorden; de stijl bepaalt de plaatsing van komma's (vooraan of achteraan), de inspringbreedte en of sleutelwoorden in hoofd- of kleine letters worden geschreven.
-
3
Tokens worden geparseerd, niet met regex vervangen
Een tokenizer verwerkt strings, commentaar, haakjes en subquery's correct. Stringliterals blijven letterlijk behouden.
-
4
Kopieer de opgemaakte uitvoer
Gevalideerde SQL: dezelfde semantiek, een nettere lay-out.
Vóór en na
Vóór:
SELECT u.id,u.name,COUNT(o.id) AS orders FROM users u LEFT JOIN orders o ON o.user_id=u.id WHERE u.created_at>='2024-01-01' GROUP BY u.id,u.name HAVING COUNT(o.id)>5 ORDER BY orders DESC LIMIT 50;
Na (komma vooraan, sleutelwoorden in hoofdletters, inspringing van 2 spaties):
SELECT
u.id
, u.name
, COUNT(o.id) AS orders
FROM users u
LEFT JOIN orders o
ON o.user_id = u.id
WHERE u.created_at >= '2024-01-01'
GROUP BY u.id, u.name
HAVING COUNT(o.id) > 5
ORDER BY orders DESC
LIMIT 50;
Belangrijke stijlkeuzes
- Hoofdletters versus kleine letters voor sleutelwoorden. Hoofdletters zijn traditioneel en gemakkelijk te scannen; kleine letters ogen netter in moderne code-editors met syntaxiskleuring.
- Komma vooraan versus achteraan. Een komma vooraan (
, col) maakt het eenvoudiger om één kolom uit te commentariëren; een komma achteraan (col,) leest natuurlijker in tekst. - Plaatsing van komma’s in
GROUP BY. Vaak één per regel voor lange clausules, op één regel voor korte. - Inspringing van JOIN.
ONop de volgende regel (hangende inspringing) versus op dezelfde regel. Lange voorwaarden hebben baat bij hangende inspringing. - Subquery’s. Spring de hele subquery in, niet alleen het openingshaakje.
Dialectspecifieke valkuilen
- MySQL-backticks versus dubbele aanhalingstekens in PostgreSQL voor identifiers.
WITH-CTE’s. MS SQL vereist een;vóórWITH; de formatter handelt dit af.- Vensterfuncties. Lange
OVER (...)-clausules hebben baat bijPARTITION BYenORDER BYdie over meerdere regels worden afgebroken. - BigQuery heeft
ARRAY_AGG,STRUCTen tabelsuffixen (*_yyyymmdd) die de tokenizer niet mag breken. - Oracle heeft de
(+)-syntaxis voor outer joins; de formatter behoudt deze, maar markeert haar als verouderd.
Wat de formatter niet doet
- Bugs verhelpen. Een ongeldige JOIN blijft ongeldig.
SELECT *uitbreiden. Kolomlijsten worden niet uit het schema afgeleid.- Query’s optimaliseren. Alleen lay-out, geen uitvoeringsplannen.
- Subquery’s herschrijven als CTE’s. Dat is een andere kwestie.
Veelgestelde vragen
Nee, het is puur cosmetisch. Spaties, regeleinden en de plaatsing van komma’s verschuiven, maar sleutelwoorden, operatoren, literals en identifiers blijven exact behouden.
Ondersteund: CREATE TABLE, ALTER, CREATE PROCEDURE en triggers. De formatter verwerkt blokconstructies (BEGIN ... END) en regelvoortzettingen binnen procedures.
Dat zou niet mogen; als het toch gebeurt, gaat het waarschijnlijk om een verkeerd dialect. Probeer een ander dialect. Meld aanhoudende fouten; wij behandelen ze als bugs.
Flink SQL en Cassandra CQL lijken op elkaar, maar hebben dialectspecifieke sleutelwoorden die de meeste formatters verminken. Gebruik ze met voorzichtigheid en controleer of de uitvoer werkt.
Gerelateerde tools
Webpack-configuratiegenerator
Maak een webpack.config.js voor webpack 5 voor gewoon JavaScript, React of Vue: TypeScript, Babel, CSS of Sass, afbeeldingen, HtmlWebpackPlugin, een devserver en de npm install-regel.
OpenAPI-validator
Plak een OpenAPI- of Swagger-document in JSON of YAML en controleer de kernstructuur: versieveld, info-object en paths, met duidelijke fouten en waarschuwingen.
PHP-formatter
Voeg regelafbrekingen en een inspringing van 2 of 4 spaties toe aan een eenvoudige PHP-snippet. Controleer het resultaat: dit is geen PHP-parser of PSR-12-fixer.
CSS-loadergenerator
Maak een cirkelvormige spinner in pure CSS: stel de diameter, randdikte, accentkleur en rotatiesnelheid in, bekijk het live en kopieer de kant-en-klare CSS. Geen SVG, geen JavaScript.
ASCII-tabelreferentie
Volledige ASCII-tabel van 0 tot 127 met decimale, hexadecimale, octale en binaire waarden en HTML-numerieke referentienotatie, inclusief control codes zoals NUL, LF en DEL.
YAML naar JSON
Omzet de YAML-configuratie naar JSON voor tools en API's die alleen JSON ondersteunen. Handelt van ankers, samenvoegings sleutels en geneste structuren.
Tool beschikbaar in andere talen
- SQLフォーマッター [JA]
- SQL-formaterare [SV]
- Formateur SQL [FR]
- SQL-Formatter [DE]
- รูปแบบ SQL [TH]
- Định dạng SQL [VI]
- Formateador SQL [ES]
- Formater SQL [PL]
- Format SQL [ID]
- SQL 포매터 [KO]
- تنسيق SQL [AR]
- Formatador SQL [PT]
- Форматтер SQL [RU]
- SQL Biçimlendirici [TR]
- SQL 格式化器 [ZH]
- SQL Formatter [EN]
- Formatter SQL [IT]