# 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 个空格，也可以使用制表符。脚本只会在内存中格式化，绝不会保存。

在这里投放广告？

[给我们发邮件](mailto:hi@dennn.is?subject=%E5%9C%A8%20OneClick%20Pro%20%E4%B8%8A%E6%8A%95%E6%94%BE%E5%B9%BF%E5%91%8A)

[广告 适用于 WordPress 的智能体就绪型插件套件。](https://sleekwp.com/?ref=oneclickpro)
