名称和标识符
适用于 ✅ 开源版 ✅ 专业版 ✅ 企业版
各种 SQL 对象,例如 列或表,可以使用名称(通常也称为标识符)来引用。 SQL 方言在语法上对名称的理解方式有所不同。 这些差异包括
- 在“未加引号”的名称中允许使用的字符
- 在“加引号”的名称中允许使用的字符
- 名称引号字符(例如
"双引号"
、`反引号`
或[方括号]
)(例如"双引号"
、`反引号`
或[方括号]
) - 不区分大小写的(“未加引号”)名称的标准大小写
由于上述原因,并且为了防止名称可能包含 SQL 代码而产生的额外 SQL 注入风险,jOOQ 默认会引用生成的 SQL 中的所有名称,以确保它们与数据库中实际包含的内容相匹配。 这意味着以下名称将被渲染
-- Unquoted name AUTHOR.TITLE -- MariaDB, MySQL `AUTHOR`.`TITLE` -- MS Access, SQL Server, Sybase ASE, Sybase SQL Anywhere [AUTHOR].[TITLE] -- All the others, including the SQL standard "AUTHOR"."TITLE"
// Unqualified name Name name = name("TITLE"); // Qualified name Name name = name("AUTHOR", "TITLE");
这些名称可以用作独立的 QueryParts,或者作为 SQL 表达式的 DSL 入口点,例如
有关如何使用名称/标识符来构造此类表达式的更多详细信息,请参见手册的相关章节。
反馈
您对此页面有任何反馈吗? 我们很乐意听取您的意见!