SQL Formatter

Notepad++ plugin

6 SQL-Dialekte

ANSI als neutrale Basis, plus sechs konkrete Dialekte — Snowflake, MS SQL (T-SQL), PostgreSQL, MySQL/MariaDB, SQLite und Databricks (Spark SQL). Der Formatter weiß pro Dialekt, welcher Funktionsname, welches Anführungszeichen und welche Datums-/Zeitsyntax üblich ist, und konvertiert über eine zentrale Zwischenform, sodass jeder Dialekt jeden anderen erreichen kann.

Funktionsnamen, die je Datenbank unterschiedlich heißen

NULL-Ersetzung heißt NVL in Snowflake, ISNULL in T-SQL und IFNULL in MySQL und Databricks. Die Zeichenkettenlänge ist in den meisten Dialekten LENGTH, in T-SQL jedoch LEN. Der Formatter erkennt diese Funktionsfamilien und schreibt sie in das Äquivalent Ihres Ziel-Dialekts um — keine 1:1-Textersetzung, sondern eine Nachschlagetabelle pro Dialektpaar.

Vorher

SELECT NVL(discount, 0) AS discount, LENGTH(customer_name) AS name_len
FROM orders

Nachher

SELECT IFNULL(discount, 0) AS discount, LEN(customer_name) AS name_len
FROM orders

Ein Klick: idiomatische Schreibweise pro Dialekt

Auf der Registerkarte Dialekt wählen Sie einen Dialekt und klicken auf "Apply dialect defaults" — der Formatter wendet sofort die zu diesem Dialekt passende Schreibweise-Konvention an (z. B. überwiegend Großbuchstaben in Snowflake-Skripten, Kleinbuchstaben im PostgreSQL-Stil). Das Ergebnis können Sie danach auf den anderen Registerkarten weiter verfeinern.

Dialect-tabblad van de SQL Formatter instellingen

MS SQL zu Snowflake, inklusive Datumsfunktionen

Auch idiomatische Konstrukte wie IIF() und GETDATE() erhalten ihr Snowflake-Gegenstück, zusammen mit der zu diesem Dialekt passenden Schreibweise-Voreinstellung.

Vorher

select iif(amount > 1000, 'large', 'small'), isnull(notes, '-'), getdate()
from orders

Nachher

SELECT IFF(AMOUNT > 1000, 'LARGE', 'SMALL'), NVL(NOTES, '-'), CURRENT_TIMESTAMP
FROM ORDERS

Häufig gestellte Fragen

Warum ist ANSI kein 'siebter Dialekt' in der Liste?

ANSI ist die neutrale Zwischenform, die der Formatter intern verwendet, um von jedem Dialekt in jeden anderen zu konvertieren, und kann selbst auch als Dialekt-Einstellung ohne herstellerspezifische Funktionsnamen gewählt werden.

Was passiert mit Funktionen ohne Äquivalent?

Funktionen, die der Formatter nicht als Teil einer bekannten Dialektfamilie erkennt, bleiben genau so, wie sie sind — es wird nie geraten.