SQL 标识符可移植性检查器

粘贴拟用表名或列名,或每行输入一个名称,查看 PostgreSQL、MySQL、SQL Server 和 SQLite 中哪些会被拒绝、静默改名或以不一致方式处理,以及原因。

在您的浏览器中本地处理。文件绝不会被上传。

使用方法 工具

  1. 每行粘贴一个标识符:表名、列名或多个名称。内容不会离开浏览器。
  2. 选择“检查标识符”。
  3. 查看每个标记名称受哪些具体数据库引擎影响、哪些不受影响及原因。
  4. 仅在提供时使用建议改写;保留字冲突和引用风格需要判断,工具不会擅自决定。

假设条件

来源与参考数据

方法说明

每个标识符检查六类有文档记录的可移植性问题:保留字冲突(按引擎分别检查,因为某个词可能只在部分引擎中保留);大小写折叠差异(PostgreSQL 将未引用标识符转为小写;MySQL 大小写敏感性取决于操作系统/设置;SQL Server 不区分但保留大小写;SQLite 区分大小写);引用语法差异(双引号、反引号、方括号);长度限制(PostgreSQL 63 字节并会静默截断、MySQL 64 字符、SQL Server 128 字符、SQLite 无实际限制);未引用时的无效字符;以及前导下划线命名惯例。只对两种机械上明确的情况改写:统一小写以避免大小写折叠差异,以及用下划线替换无效字符;不重命名保留字,也不选择引用样式。

计算示例

某些引擎保留、另一些不保留的词

输入项: limit

结果: `limit` 在 PostgreSQL、MySQL 和 SQLite 中是保留字;SQL Server 没有 LIMIT 子句(使用 TOP/OFFSET-FETCH),因此此处不保留。标记为错误,并明确列出受影响的三个引擎。

混合大小写标识符

输入项: CustomerOrder

结果: 若不加引号,PostgreSQL 会静默折叠为 `customerorder`;MySQL、SQL Server 和 SQLite 的大小写处理规则各不相同。标记为警告,并改写为较安全、可移植的 `customerorder`。

空格和连字符

输入项: customer order-id

结果: 四种引擎都不能将其作为裸标识符使用;每种都需采用不同引用符号。标记为错误,并建议用下划线改为 `customer_order_id`,这是普遍安全的形式。

超过 PostgreSQL 字节限制的标识符

输入项: an identifier whose encoded length exceeds 63 bytes

结果: PostgreSQL 标识符上限为 63 字节,较长名称会被截断,因此不同长名称可能截断后冲突。多字节文本的字节限制不一定等于字符数。本检查器使用整理过的规则集,并非穷尽验证所有标识符或数据库配置。

实用指南
常见错误

常见问题

为什么 `limit` 在三个引擎标记,而 SQL Server 没有?

SQL Server 没有 LIMIT 子句,而是使用 TOP 或 OFFSET/FETCH,因此 LIMIT 不是其保留关键字。PostgreSQL、MySQL 和 SQLite 都在查询语法中使用 LIMIT,所以该词在这些引擎中保留。

给保留字加引号总能解决吗?

实际上在此处四种引擎中都可以,但引用符号不同:PostgreSQL/SQLite 使用双引号,MySQL 使用反引号,SQL Server 使用方括号。因此从一个引擎原样复制的带引号名称无法在另一个引擎解析。工具列出各引擎相应引用形式,不替你选择。

前导下划线真的是问题吗?

不是;它只作为轻微提示标记。四种引擎都允许,提示仅因 PostgreSQL 内部目录对象和部分 ORM 按惯例使用前导下划线名称。

上次审核: 2026-09-26

保留字表是各引擎常见且可核实冲突词的整理子集,并非 PostgreSQL、MySQL、SQL Server 或 SQLite 的完整列表。最终确定 schema 前,请查阅相应引擎官方保留字参考。工具也不解析完整 SQL 语句,每行只处理一个标识符,不解析完整 `CREATE TABLE` 内容。

主题和工具偏好设置,以及已保存和最近使用的列表仅存储在此浏览器中。