Transformez du SQL illisible écrit sur une seule ligne en requête correctement indentée — 18 dialectes, entièrement dans votre navigateur.
Le SQL arrive rarement lisible : une ligne interminable sortie d'un ORM, tous les mots-clés en minuscules dans un journal de requêtes lentes, l'indentation détruite par une messagerie. Le reformater à la main avant même de pouvoir le lire fait perdre dix minutes — et c'est justement à la lecture que se trouvent les bugs : une condition de jointure devenue un filtre en douce, un OR qui lie plus large que ne le croyait son auteur, une sous-requête à trois niveaux de profondeur. Collez-le ici et il revient avec une clause par ligne, une imbrication alignée et les mots-clés dans la casse que vous préférez.
Le travail est fait par un vrai parseur, pas par un tas d'expressions régulières. La requête est découpée en jetons, comprise comme un arbre de clauses puis réimprimée : c'est pour cela que les commentaires restent sur la ligne où ils ont été écrits, que les littéraux de chaîne survivent intacts même quand ils contiennent des mots comme SELECT ou FROM, et qu'une fonction de fenêtrage garde son bloc OVER (PARTITION BY … ORDER BY …) correctement imbriqué. Dix-huit dialectes sont proposés — Standard SQL, PostgreSQL, MySQL, MariaDB, SQLite, SQL Server (T-SQL), Oracle PL/SQL, BigQuery, Snowflake, Redshift, Spark, Trino, Hive, Db2, Db2 for i, TiDB, SingleStore et N1QL — et ce choix n'est pas décoratif : le dollar-quoting de PostgreSQL ($$body$$) et les crochets T-SQL ([dbo].[table]) sont des erreurs d'analyse en Standard SQL et se formatent parfaitement avec le bon dialecte. Les paramètres tels que ?, :name, $1 et @name sont reconnus dans tous les dialectes et transmis tels quels, pour que du SQL copié directement depuis un journal de requêtes ne soit pas abîmé.
Deux limites, dites honnêtement. Le formateur vérifie seulement que le texte est du SQL grammaticalement valide pour le dialecte choisi : il ne sait rien de vos tables, il formatera donc une requête qui référence une colonne inexistante, et il n'exécute jamais rien. Quand le texte ne peut pas être analysé, il indique où le parseur a abandonné, avec la ligne et la colonne, au lieu de renvoyer une bouillie à moitié formatée. La confidentialité est la raison de formater ici plutôt que sur un site au hasard : les requêtes de production portent des noms de tables, de la logique métier et parfois des données personnelles. La bibliothèque (sql-formatter, licence MIT, servie depuis vai.la et téléchargée seulement au premier formatage) s'exécute dans votre navigateur.
Non. La requête est analysée et réimprimée par du JavaScript sur votre propre appareil — rien n'est envoyé, journalisé ni stocké. Cela compte, parce que les vraies requêtes exposent votre schéma, vos règles métier et parfois des données personnelles glissées dans des littéraux. Après le premier formatage, vous pouvez vous déconnecter d'Internet et l'outil continue de fonctionner.
Celui que parle votre base. Le Standard SQL couvre la plupart des requêtes ordinaires, mais une syntaxe propre à une base demande le dialecte correspondant : les [crochets] exigent SQL Server (T-SQL), le $$dollar quoting$$ exige PostgreSQL. Une erreur d'analyse sur du SQL valide se règle en général en changeant de dialecte.
Non. Seuls les espaces, les sauts de ligne et la casse des mots-clés changent. Identifiants, littéraux de chaîne, nombres et commentaires reviennent exactement comme tapés : la requête formatée est équivalente à l'originale.
Parce que le parseur a rencontré quelque chose qu'il n'a pas pu faire entrer dans la grammaire, à la ligne et à la colonne indiquées. Trois causes habituelles : une coquille, comme une virgule, un guillemet ou une parenthèse manquante ; un fragment qui n'est pas une instruction complète ; ou une syntaxe propre à une base avec le mauvais dialecte sélectionné.
Oui. Les paramètres positionnels (?), numérotés ($1) et nommés (:name, @name) sont reconnus dans tous les dialectes et réimprimés sans changement : vous pouvez coller directement depuis un journal de requêtes ou la sortie de débogage d'un framework.
Oui. Les instructions séparées par des points-virgules sont formatées l'une après l'autre, avec une ligne vide entre elles. La saisie est plafonnée à 300 000 caractères pour que la page ne se fige jamais ; au-delà, découpez le fichier.
Vai.la transforme n'importe quelle URL en lien court avec statistiques de clics, QR Code et votre propre biolink.
Vai.la n'est pas responsable de l'utilisation des outils ni des décisions prises sur la base de leurs résultats.