T-SQL 格式化工具
为 SQL Server 和 Azure SQL 格式化 T-SQL,支持 [bracket] 标识符、N'' Unicode 字符串、#temp 表、@variables 和 GO 批次分隔符等规则。CROSS APPLY 和 OUTER APPLY 会另起一行,OUTPUT 和 FOR JSON 保留为子句,BEGIN TRANSACTION 不会被误当作代码块的开头。对于数据库开发人员,未闭合的字符串和括号会报告所在行和列。
常见问题
支持哪些 T-SQL 语法?
可识别 [方括号] 标识符(包括 ]] 转义)或双引号标识符、N'' Unicode 字符串、#temp 和 ##global 临时表、@variables 以及 @@ 系统函数。geography::Point 等静态方法调用也会保持原样。
如何处理 GO 批次分隔符?
仅包含 GO 的行(也可以带有 GO 5 这样的重复次数)会结束一个批次。它会保留在单独一行,每个批次都会分别格式化。
支持哪些 T-SQL 子句?
CROSS APPLY 和 OUTER APPLY 会像连接一样另起一行。OUTPUT、OPTION、FOR XML 和 FOR JSON 会与标准子句一样各自保留为独立子句。
它能格式化存储过程吗?
可以。BEGIN 和 END 代码块、BEGIN TRY 和 BEGIN CATCH、IF 和 ELSE 以及 WHILE 循环都会缩进。BEGIN TRANSACTION 和 BEGIN TRAN 会被视为语句,而不是代码块的开头。
支持 MERGE 吗?
可以。WHEN MATCHED、WHEN NOT MATCHED BY TARGET 和 WHEN NOT MATCHED BY SOURCE 分支都会另起一行。
注释会保留吗?
可以。-- 行注释和 /* 块注释 */ 会保留在原处。多行块注释会根据新位置重新缩进。
它会更改关键字的大小写吗?
不会。关键字和标识符会保留你输入时的大小写。只有空白字符和换行会改变。
会检测哪些错误?
会报告未闭合的字符串、方括号标识符或带引号的标识符、块注释以及不匹配的括号,并指出所在行和列。该工具不会连接到 SQL Server,也不会验证对象名称。
输入内容可以有多大?
每次请求最多 1 MB,每条语句或每个批次最多 128 KB。语句之间以空行分隔。
可以选择缩进方式吗?我的 SQL 会保存吗?
你可以使用 2 个或 4 个空格,也可以使用制表符。脚本只会在内存中格式化,绝不会保存。