SQL 格式化与压缩
把 SQL 按子句分行整理,或压缩成一行,支持 MySQL、PostgreSQL、SQLite、SQL Server 和 BigQuery。
代码示例
可直接复制到你自己的项目中。每个示例只使用该语言的标准库,因此无需安装任何东西。
const sql = 'SELECT\n name,\n email\nFROM\n users\nWHERE\n active = 1'
console.log(sql.replace(/\s+/g, ' ').trim())功能
把 SQL 按子句分行整理,或压缩成一行。除标准 SQL 外,还支持 MySQL、PostgreSQL、SQLite、T-SQL(SQL Server)和 BigQuery,语法错误会附带行和列。
使用方法
- 粘贴 SQL,或拖入
.sql文件。 - 选择格式化或压缩,再选择方言、关键字的大小写和缩进。
- 复制或下载结果,或用将输出用作输入把它变成下一次输入。
示例
格式化 select id,name from users where active=1 后,SELECT、FROM 和 WHERE 各占一行,列和条件缩进在下面。再压缩格式化后的查询,得到 SELECT id,name FROM users WHERE active = 1。
须知
- 只有空白会变,如果你选择了,关键字的大小写也会变。名称、字符串和数字保持输入时的样子。
- 压缩会删除
--和/* */注释,但保留数据库会执行的 MySQL/*! */注释和优化器提示/*+ */。 - 选择数据库使用的方言:反引号是 MySQL,方括号是 T-SQL,
::类型转换是 PostgreSQL。 - 格式化器在你第一次格式化时才加载,所以第一次结果可能稍慢。压缩无需下载。
为什么方言很重要?
不同数据库书写名称和运算符的方式不同:MySQL 用反引号,T-SQL 用方括号,PostgreSQL 有 :: 类型转换和 $$ 字符串。方言选错时,合法的 SQL 可能无法解析,或排版怪异。
常见问题
格式化会改变查询的行为吗?
不会。只有空白会变,如果你选择了,关键字的大小写也会变。名称、字符串和数字保持原样。压缩会删除注释,但会保留数据库可能执行的 MySQL /*! */ 和 /*+ */ 注释。
为什么会报语法错误?
格式化器需要先读懂查询才能排版,所以会在第一个无法解析的记号处停下,并给出它的行和列。先检查方言,再看它指出的位置:缺少的逗号、引号或右括号。
这个工具会把我的 SQL 发送到别处吗?
不会。一切都在你的浏览器中进行。你输入的内容不会发送到我们的服务器。