SQL 格式化器

举报
yd_280683556 发表于 2026/09/10 14:15:27 2026/09/10
【摘要】 作品简介:SQL 一键美化排版,关键字对齐子句断行括号缩进,字符串注释智能保护,可复制SQL 格式化器(SQL Beautifier)将杂乱的单行/多行 SQL 一键美化为规范排版(关键字对齐、子句换行、括号缩进)的轻量网页工具。纯 HTML/CSS/JavaScript 单文件实现,零依赖、零后端,词法解析与排版全部在浏览器本地完成。功能特性子句断行对齐:SELECT / FROM / W...
SQL 格式化器 preview

SQL 格式化器(SQL Beautifier)

将杂乱的单行/多行 SQL 一键美化为规范排版(关键字对齐、子句换行、括号缩进)的轻量网页工具。纯 HTML/CSS/JavaScript 单文件实现,零依赖、零后端,词法解析与排版全部在浏览器本地完成。

功能特性

  • 子句断行对齐SELECT / FROM / WHERE / GROUP BY / HAVING / ORDER BY / LIMIT / VALUES / JOIN / ON / UNION / INSERT INTO / UPDATE / SET / DELETE FROM 等主关键字独占行首
  • 关键字大小写一键切换:大写(UPPER)/ 小写 / 保持原样三种模式
  • 智能括号跟踪:子查询按括号深度缩进;IN (1, 2, 3) 列表与函数调用 count(o.id) 保持内联不拆分
  • 逻辑层可视化AND / OR 断行并缩进一档,WHERE 多条件层次清晰
  • 字符串与注释保护:单引号字符串(含 '' 转义与 N'…'/E'…' 前缀)、-- 行注释、/* */ 块注释全程占位保护,内部逗号、关键字、括号原样保留
  • 容错提示:字符串未闭合、括号不配对给出明确错误提示
  • 语法高亮 + 行号:关键字 / 字符串 / 注释分色显示,结果一键复制

工作原理

输入 SQL 原文
    │  ① 正则令牌流:跳过空白,识别字符串(占位保护)/注释/关键字/标识符/数字/符号
    ▼
令牌序列
    │  ② 关键字三分:主关键字(断行大写) / AND·OR(断行加档) / IN·LIKE·AS…(行内大写)
    │  ③ 括号判定:IN 与 VALUES 列表、函数调用 → 内联组;其余 → 子查询(深度+1)
    ▼
行流(主关键字断行 · 逗号换行 · 元组续组)
    │  ④ 后验缩进:按子查询净括号数 + 非关键字行加档渲染
    ▼
高亮 / 行号 / 一键复制输出

核心词法只有一条流式正则与三类关键字集合,无第三方解析库;字符串与注释在排版前占位替换,保证其内容不被任何格式化规则触碰。

使用场景

  • 代码审查与演示:把拷贝来的紧凑 SQL 展开成规范排版,便于讲解与评审
  • 规范落地:统一团队 SQL 关键字大写与子句换行风格,直接复制进代码库
  • 排错辅助:WHERE 多条件 / 多层子查询 / JOIN 链经断行缩进后层级一目了然
  • 脚本整理:迁移脚本、建表语句、数据修复 SQL 批量美化

快速开始

无需安装与构建,直接用浏览器打开 index.html 即可使用,或在任意静态服务器下访问:

python3 -m http.server 8024
# 访问 http://localhost:8024/index.html

技术栈

  • HTML5 + CSS3 + 原生 JavaScript(零第三方依赖)
  • 词法:单条流式正则 /(\s+)|(--[^\n])|(\/\[\s\S]?\\/)|('(?:[^']|'')*')|(\w+)|([^\s])/gi
  • 排版:主关键字集合 + 括号类型栈(内联组 / 子查询)+ 后验缩进渲染
  • 剪贴板:navigator.clipboard.writeText(含降级提示)
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。