# PostgreSQL 格式化器

按照 Postgres 规则格式化 PostgreSQL 查询和脚本，支持函数体中的美元引号字符串、E'' 转义字符串、双引号标识符、:: 类型转换，以及 ->> 和 @> 等 JSON 运算符。RETURNING、ON CONFLICT 和 DO UPDATE SET 等子句会各占一行；未闭合的字符串、注释或括号会报告行号和列号。适合开发者阅读迁移脚本和查询。

## 常见问题

### 能识别哪些 PostgreSQL 语法？

可识别带双写引号的标准字符串、带反斜杠转义的 E'' 字符串、U&'' Unicode 字符串、B'' 和 X'' 位字符串、双引号标识符以及 $1 参数。也能读取 $$...$$ 或 $body$...$body$ 这类美元引号字符串。

### 美元引号中的函数体会如何处理？

美元引号中的函数体会按原样保留，因为对于 PostgreSQL 来说，它是一个字符串。外围的 CREATE FUNCTION 语句会进行格式化，但函数体本身不会更改。

### 类型转换和运算符会保持完整吗？

是的。像 value::integer 这样的类型转换会保持连在一起，->、->>、#>、#>>、@>、<@、?|、?&、@@ 以及正则表达式运算符 ~、~* 和它们的否定形式都不会被拆开。在 PostgreSQL 中，# 是运算符，不是注释。

### 哪些 PostgreSQL 子句会单独换行？

RETURNING、ON CONFLICT、DO UPDATE SET、FOR UPDATE、FOR NO KEY UPDATE、FOR SHARE 和 FOR KEY SHARE 会作为完整子句保留在一起。常见的 SELECT、FROM、WHERE、GROUP BY、ORDER BY、LIMIT 和 OFFSET 子句也会各自另起一行。

### 注释会保留吗？

会。行注释和块注释会保留在原处，并且可以正确读取 PostgreSQL 支持的嵌套块注释。多行块注释会根据新位置重新缩进。

### 支持 MERGE 吗？

支持。WHEN MATCHED 和 WHEN NOT MATCHED 分支会另起一行，因此 PostgreSQL 15 及更高版本中的 MERGE 语句仍然清晰易读。

### 它会更改关键字的大小写吗？

不会。关键字和标识符会保留你输入时的大小写。PostgreSQL 中的带引号标识符区分大小写，且绝不会被修改。

### 会检测哪些错误？

未闭合的字符串、带引号的标识符、美元引号字符串和块注释，以及括号不匹配，都会报告行号和列号。此工具不会检查完整的 PostgreSQL 语法或你的架构。

### 输入内容可以有多大？

每次请求最多 1 MB，每条语句最多 128 KB。包含许多语句的迁移文件会逐条格式化，并以空行分隔。

### 可以选择缩进方式吗？

可以。使用 2 个或 4 个空格，也可以使用制表符。你的 SQL 只会在内存中处理，绝不会保存。

在这里投放广告？

[给我们发邮件](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)
