EN
首页 分类 SQL 格式化

SQL 格式化

SQL 在线格式化工具,支持 MySQL/Oracle 方言,子句换行缩进、JOIN 与条件对齐、子查询嵌套,关键字大小写可切换,SQL 压缩

常见问题

支持哪些数据库方言?

以 MySQL 和 Oracle 的常用语法为主,标准 SQL 基本都能正确排版。

关键字能统一大小写吗?

只有两档:「保留原样」和「转大写」。没有转小写这一档 —— 需要全小写的话,粘贴时用原样保持,或者转完再用查找替换统一处理。

字符串里的内容会被改吗?

不会。字符串和注释按整体保留,里面的 select 不会当关键字处理。

关于这个工具

排版是子句级的:SELECT / FROM / WHERE / GROUP BY / ORDER BY / HAVING / LIMIT / SET / VALUES 各自成行,SELECT 的字段列表一列一行,AND / OR 再缩进一层,比较运算符两侧补空格。多层子查询按括号层级递进缩进。

识别范围是一张显式的关键字表:主语句(含 INSERT INTO、DELETE FROM、CREATE TABLE 等)、连接词(INNER / LEFT / RIGHT / FULL OUTER / CROSS JOIN)、条件词(ON、CASE、BETWEEN、IN、EXISTS、IS NULL…)。表里没有的词不会被改大小写、也不会触发换行 —— 各家的私有函数名、方言扩展保持原样。

字符串、反引号标识符和注释都是整体保护的:`user` 不会被拆开,'a, b' 压缩后仍是 'a, b',-- 与 /* */ 注释在美化时保留、压缩时丢弃。反引号按 MySQL 标识符引用处理,双写转义(``)也识别。

两个边界:大小写只有「保留原样 / 转大写」两档,没有转小写;它不是 SQL 解析器 —— 窗口函数 OVER (PARTITION BY …)、CASE WHEN 的多分支、CTE 都只按括号和关键字机械排版,不会智能断行;MySQL 的 # 行注释不被识别(#tmp 这类临时表名才需要它当标识符)。压缩只去掉空白与注释,不保证紧凑到极致,但保证不改变语义。