当前位置: 首页 > news >正文

sql格式化自动识别SQL语法结构

一、安装包

PoorMansTSqlFormatterLib

二、代码实现

using Microsoft.AspNetCore.Mvc;
using PoorMansTSqlFormatterLib.Formatters;
using PoorMansTSqlFormatterLib.Parsers;
using PoorMansTSqlFormatterLib.Tokenizers;namespace SaaS.OfficialWebSite.Web.Controllers
{public class SqlFormatController : Controller{public IActionResult Index(){return View();}[HttpPost]public IActionResult FormatSql([FromBody] FormatRequest request){try{var options = new TSqlStandardFormatterOptions{IndentString = request.Options.IndentWithTabs ? "\t" : "    ",SpacesPerTab = 4,MaxLineWidth = 999,KeywordStandardization = request.Options.UppercaseKeywords,TrailingCommas = request.Options.TrailingCommas,SpaceAfterExpandedComma = request.Options.SpaceAfterExpandedComma,ExpandCommaLists = true,ExpandBooleanExpressions = true,ExpandCaseStatements = true,ExpandBetweenConditions = true,ExpandInLists = true,BreakJoinOnSections = true,UppercaseKeywords = request.Options.UppercaseKeywords};var tokenizer = new TSqlStandardTokenizer();var parser = new TSqlStandardParser();var formatter = new TSqlStandardFormatter(options);var tokenized = tokenizer.TokenizeSQL(request.Sql);var parsed = parser.ParseSQL(tokenized);var formattedSql = formatter.FormatSQLTree(parsed);return Ok(new { formattedSql });}catch (Exception ex){return BadRequest(new { error = ex.Message });}}}public class FormatRequest{public string Sql { get; set; }public FormatOptions Options { get; set; }}public class FormatOptions{public bool IndentWithTabs { get; set; }public bool UppercaseKeywords { get; set; }public bool TrailingCommas { get; set; }public bool SpaceAfterExpandedComma { get; set; }}
}

运行效果:SQL 语句格式化

http://www.lqws.cn/news/518149.html

相关文章:

  • gsql: command not found
  • OpenLayers 上传Shapefile文件
  • 基于 Python 的批量文件重命名软件设计与实现
  • 智哪儿专访 | Matter中国提速:开放标准如何破局智能家居“生态孤岛”?
  • 舵机在智能家居里的应用
  • 第k个数字
  • 归并排序算法
  • 企业内部安全组网技术解析:安全通道选型、零信任架构与数据合规加密防护
  • 计算机网络-----详解HTTP协议
  • 基于springboot+vue的智慧农业专家远程指导系统
  • 苹果签名应用掉签频繁原因排查,以及如何避免
  • Mysql使用窗口函数查询
  • 左神算法之有序二维矩阵中的目标值查找
  • vscode管理go多个版本
  • 英飞凌高性能BMS解决方案助力汽车电动化
  • 【世纪龙科技】新能源汽车VR虚拟体验展示馆-解锁认知新维度
  • 灰度发布怎么保证数据库一致的
  • AES加密:为你的PDF文档加上一道钢铁防线
  • Kubernetes、Docker Swarm 与 Nomad 容器编排方案深度对比与选型指导
  • 论文阅读:A Survey on Large Language Models for Code Generation
  • 不用vue,只用html,即可简单实现electron项目
  • 鸿蒙OpenHarmony[Disassembler反汇编工具]ArkTS运编译工具链
  • IntelliJ IDEA 社区版安装终极教程(2025 最新图文详解)
  • 微信小程序中scss、ts、wxml
  • React19源码系列之 API (react)
  • 惠普HP Laser MFP 116w 打印机信息
  • 深度解析Lucene IndexWriter 性能优化
  • 银河麒麟高级服务器操作系统(全架构)OpenGauss 数据库部署手册
  • Fisco Bcos学习 - 控制台搭建和基本使用
  • SpringBoot中5种拦截器使用场景