Utilia

SQL-formaterare

Formatera SQL-frågor för PostgreSQL, MySQL, SQL Server, Oracle, BigQuery, Snowflake med flera, med val för nyckelord och indrag, i din webbläsare.

Så formaterar du en SQL-fråga

  1. Klistra in en eller flera frågor, eller klicka på Öppna en fil för att läsa in en .sql-fil (upp till 10 MB).
  2. Välj Dialekt för din databas, till exempel PostgreSQL, MySQL eller SQL Server (T-SQL).
  3. Välj hur Nyckelord ska skrivas (VERSALER, gemener eller Behåll som skrivet) och vilket Indrag du vill ha.
  4. Kryssa i Inga mellanslag runt operatorer om du föredrar a=b+1 framför a = b + 1.
  5. Klicka på Formatera SQL och kopiera eller ladda ner resultatet. Ändrar du ett alternativ formateras frågan om.

Frågan formateras bara om som text. Den körs aldrig och skickas aldrig till någon databas eller server.

Vad formateraren gör

Verktyget använder biblioteket sql-formatter, som har öppen källkod. Det delar upp varje sats i satsdelar och placerar varje nyckelord för en satsdel (SELECT, FROM, WHERE, GROUP BY, ORDER BY …) på en egen rad, med satsdelens innehåll indraget under. Kolumnerna i en SELECT-lista hamnar en per rad, villkor med AND och OR börjar på nya rader, och underfrågor och CASE-uttryck dras in efter nästlingsnivå. Korta uttryck inom parentes stannar på en rad. Flera satser åtskilda av semikolon hålls isär med en tom rad.

Bara blanktecken och skiftläge ändras. Strängliteraler, citerade identifierare och kommentarer behålls exakt, så den formaterade frågan ger samma resultat som originalet. Text som 'Åsa Öberg' i en sträng rörs alltså inte.

Därför spelar dialekten roll

SQL-databaser delar kärnspråket men skiljer sig i detaljerna, och en formaterare måste känna till dem för att läsa frågan rätt:

  • identifierare citeras med "dubbla citattecken" i standard-SQL och PostgreSQL, med `backticks` i MySQL, MariaDB och BigQuery och med [hakparenteser] i SQL Server;
  • operatorer som PostgreSQL:s ->> och ::-konverteringar, eller Snowflakes sökvägsåtkomst med :, finns bara i vissa dialekter;
  • platshållare för parametrar skiljer sig: ?, $1, :name eller @name;
  • varje dialekt har sina egna reserverade ord och funktioner, och det är dem som alternativet Nyckelord ändrar.

Får du meddelandet ”Frågan kunde inte tolkas” ska du först kontrollera att den valda dialekten stämmer med din databas. Felet visar raden och kolumnen där tolkningen stannade. Standard-SQL är det mest restriktiva valet, så välj din faktiska databas när det går.

Skiftläge för nyckelord och stiltips

Nyckelord med versaler är fortfarande den vanligaste konventionen, eftersom de skiljer språket från tabell- och kolumnnamn med en gång. Gemener är populärt i team som tycker att det är lättare att läsa, och Behåll som skrivet låter ditt val vara orört. Tabell-, kolumn- och funktionsnamn ändras aldrig: bara reserverade nyckelord följer alternativet. I långa filer gör en konsekvent formatering det också mycket lättare att granska skillnader mellan versioner.

Vanliga frågor

Vilka dialekter stöds?

Standard-SQL, PostgreSQL, MySQL, MariaDB, SQLite, SQL Server (T-SQL), Oracle (PL/SQL), Google BigQuery, Snowflake, Amazon Redshift, IBM Db2, Db2 for i, Apache Hive, Spark SQL, Trino/Presto, DuckDB, ClickHouse, SingleStoreDB, TiDB och Couchbase N1QL.

Kontrollerar verktyget att min fråga är giltig?

Nej. Det kontrollerar att frågan kan läsas i den valda dialekten, men inte att tabellerna eller kolumnerna finns eller att frågan skulle gå att köra. Det kan bara din databas bekräfta.

Kan det formatera lagrade procedurer?

Delvis. Satser inuti procedurer formateras, men procedurblock (BEGIN … END, loopar, DECLARE) läggs ut enklare än i en specialiserad utvecklingsmiljö.

Skickas min fråga till en server?

Nej. Formateringen körs i din webbläsare, så frågor med tabellnamn eller data stannar på din dator.

Varför har min kommentar hamnat på ett annat ställe?

Kommentarer behålls, men en kommentar i slutet av en rad kan flytta med elementet den följer när det elementet hamnar på en ny rad.