SQL 格式化
把一行 SQL 查询整理成整齐缩进的 SQL
正在加载工具…
把写成一长行的 SQL 查询拆成多行,并按子句缩进,使其易于阅读;也可以把格式化后的 SQL 压缩回一行。可以用来查看从日志或代码中拿到的查询,或把查询放进文档。
使用方法
- 把查询粘贴到“SQL 输入”中,或点击“打开文件”载入 .sql 文件。一次放多条语句也可以。
- 在“SQL 方言”中选择你的数据库。如果不确定,保持“标准 SQL”即可。
- 设置“关键字”“缩进”“逗号”和“行宽”,“结果”会立即变化。
- 复制结果,或点击“保存为 .sql”。要变成一行,请把“模式”切换为“压缩为一行”。
计算方式与说明
- 格式化使用 sql-formatter 库(MIT 许可证),提供 20 种方言,包括 MySQL、PostgreSQL、SQL Server、Oracle PL/SQL、SQLite 和 BigQuery。
- 只有空格、换行和关键字的大小写会改变;引号内的文本和注释保持不变。在“压缩为一行”模式下,-- 注释会改成 /* */ 注释,使查询仍然可以运行。
- 你的 SQL 只在这个浏览器中处理,绝不会被执行或发送到服务器。超过 20 MB 的文件无法打开。
常见问题
- 格式化 SQL 会改变查询的结果吗?
- 不会。只有空格、换行和关键字的大小写会改变;引号中的值和注释保持不变。想让关键字保持你写的样子,请把“关键字”设为“保持原样”。
- 为什么提示“无法格式化”?
- 在标记的位置附近查找没有闭合的引号或括号。有些语法需要选对方言:方括号名称需要 SQL Server,:: 类型转换需要 PostgreSQL。“压缩为一行”模式对任何文本都有效。
- 能把逗号放在每行开头吗?
- 能。把“逗号”设为“放在行首”,SELECT 列等列表中的逗号就会移到每行的开头。
- 为什么括号里的列表还在同一行?
- 比“行宽”(默认 50 个字符)短的括号内列表会保持在一行。调低这个值,就会有更多列表被拆开。