piapia123
zh

SQL 格式化与压缩

格式化

所有处理都在浏览器本地完成,数据不上传服务器

输入
输出

把挤在一行里的 SQL 展开成按子句分行的结构:每个子句单独一行、正文缩进一级,AND / OR 与 JOIN / ON 各自成行,括号里是子查询时再往里进一层,收尾的 ) 退回原位。关键字可以统一大写、小写或保持原样,标识符与被引号包起来的内容永远不动。字符串、注释、反引号与方括号标识符、Postgres 的美元引用内部都不参与结构判断,所以字符串里的分号不会把一条语句切成两半。

功能

  • 按子句换行:SELECT / FROM / WHERE / GROUP BY / ORDER BY / HAVING / LIMIT / VALUES / SET / RETURNING 等
  • AND / OR / JOIN / ON 各自成行,条件多时也能一眼看清边界
  • 括号内是子查询时按块展开,收尾的 ) 退回到子句正文的层级
  • 函数调用的括号保持内联,COUNT(*) 不会被拆散
  • 关键字可统一大写、小写或保持原样;标识符与字符串永远原样保留
  • 字符串、注释、反引号与方括号标识符、Postgres 美元引用内部的内容不参与结构判断
  • 压缩模式删掉注释与多余空白,并且不会把 - -1 粘成 --1(那会变成注释,后半句整段失效)
  • 不做语法校验:畸形 SQL 会尽力缩进而不是报错

使用方法

  1. 把 SQL 粘贴进输入框
  2. 选择处理方式、缩进与关键字大小写
  3. 按 Ctrl/⌘ + Enter 或点「运行」
  4. 点「复制」取走结果

常见问题

会校验 SQL 语法吗?
不会。这个工具只重排空白与关键字大小写,不做语法解析,写错的 SQL 会照样被格式化输出。它的用途是让能跑的语句读起来清楚,而不是替代数据库的报错信息。
压缩模式为什么把注释也删了?
行注释一旦被压到同一行,后面的语句会被整段注释掉,而输出的内容看上去完全正常。与其留下随时会吃掉代码的注释,不如一起删掉;需要保留注释就用格式化模式。
支持哪些数据库方言?
关键字表按通用 SQL 整理,同时照顾了 MySQL 的 # 注释与反引号、SQL Server 的方括号标识符、Postgres 的 $$ 美元引用与 :: 转换。格式化本身与方言无关。
SQL 会被上传吗?
不会。全部处理在浏览器内存里完成,页面不发任何请求,断网也能用。

相关工具