可用版本: Dev (3.21) | 最新版 (3.20) | 3.19 | 3.18 | 3.17 | 3.16 | 3.15 | 3.14 | 3.13 | 3.12 | 3.11

名称和标识符

适用于 ✅ 开源版   ✅ 专业版   ✅ 企业版

各种 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"

请注意,如果您希望应用其他名称样式,则可以通过自定义设置来影响 jOOQ 的名称渲染行为。

创建自定义名称

使用DSL.name()构造函数可以非常轻松地创建自定义、限定或非限定名称

// Unqualified name
Name name = name("TITLE");

// Qualified name
Name name = name("AUTHOR", "TITLE");

这些名称可以用作独立的 QueryParts,或者作为 SQL 表达式的 DSL 入口点,例如

有关如何使用名称/标识符来构造此类表达式的更多详细信息,请参见手册的相关章节。

反馈

您对此页面有任何反馈吗? 我们很乐意听取您的意见!

The jOOQ Logo