可用版本: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 子句在 jOOQ 支持的至少一种 SQL 方言中都有原生表示。 例如,当像 LPAD() 这样的函数不可用时,jOOQ 会生成一个等效的表达式。

-- MySQL (native support)
lpad('a', 10, ' ')

-- SQL Server (emulation)
(replicate(' ', (10 - len('a'))) + 'a')
// In Java



lpad("a", 10, " ")

但是,由于许多 SQL 都是为了方言兼容性而模拟的,因此没有什么可以阻止 jOOQ 支持在任何地方都没有原生表示的合成 SQL 子句。

这方面的一个例子是 量化的 LIKE 谓词,它是在 jOOQ 3.12 中引入的,在任何数据库中都会非常有用。

(TITLE     LIKE '%abc%'  OR TITLE     LIKE '%def%')
(TITLE NOT LIKE '%abc%'  OR TITLE NOT LIKE '%def%')
(TITLE     LIKE '%abc%' AND TITLE     LIKE '%def%')
(TITLE NOT LIKE '%abc%' AND TITLE NOT LIKE '%def%')
BOOK.TITLE.like(any("%abc%", "%def%"))
BOOK.TITLE.notLike(any("%abc%", "%def%"))
BOOK.TITLE.like(all("%abc%", "%def%"))
BOOK.TITLE.notLike(all("%abc%", "%def%"))

在本节中,我们将简要列出大多数此类合成 SQL 子句,这些子句可通过 jOOQ API 和 jOOQ 解析器 获得,但它们在任何方言中都没有原生表示。

反馈

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

The jOOQ Logo