🗄️
免费 SQL 格式化与美化工具
以适当缩进、可配置关键字大小写和主要子句换行美化 SQL 查询。兼容任意 SQL 方言。
加载后可离线使用
格式化后的 SQL
格式化后的 SQL 显示在这里…常见用途
- 格式化 SQL 以供代码审查在提交前清理你的 SQL 查询,使其在代码审查中易于阅读。
- 格式化 SQL 来查找 Bug格式化会暴露结构问题,如缺失的 JOIN 或错误对齐的条件。
- 为文档格式化 SQL让你的文档、博客文章或教程中的 SQL 示例看起来更漂亮、易于阅读。
- 格式化 ORM 生成的 SQLORM (Sequelize、Prisma、ActiveRecord) 生成单行 SQL — 格式化它来调试其实际生成的内容。
- 格式化报告查询大型分析 SQL 查询在不格式化的情况下变得难以管理。对其进行缩进以提高清晰度。
工作原理
此 SQL 格式化器完全由手写的分词器和格式化器构建——不使用任何外部库。格式化和语法高亮在你输入时在浏览器中即时运行,不涉及服务器。
- 1分词器拆分 SQL逐字符分词器遍历你的输入并将其拆分为类型化的记号:字符串字面量(同时处理反斜杠转义和 SQL 的双引号转义方式)、行注释(--)、块注释(/* */)、运算符、括号、标识符和数字。空白被折叠为单个空格记号。
- 2合并复合关键字分词后,第二轮处理会合并构成多词关键字的相邻记号——因此 'LEFT' 后跟 'JOIN' 变为单个 'LEFT JOIN' 记号,'GROUP' 后跟 'BY' 变为 'GROUP BY'。这使格式化器可以将它们视为单个排版单元。
- 3块排版或压缩在格式化模式中,开始块的关键字(SELECT、FROM、WHERE、JOIN 等)单独放在一行、零缩进,其后的所有内容都缩进。AND/OR 会强制换到新的缩进行。顶层括号级别的逗号也会换到新行。在压缩模式中,所有换行和多余空白都会折叠为以单个空格分隔的序列。
- 4通过正则实现语法高亮格式化后的输出经过一个正则,一次性匹配注释、字符串字面量、数字和标识符。每个匹配都包裹在带颜色类的 React span 中——注释为淡色斜体,字符串为琥珀色,数字为紫色,SQL 关键字(对照完整关键字集检查)为青色——生成彩色输出面板。