LIKE谓词
适用于 ✅ 开源版 ✅ 专业版 ✅ 企业版
LIKE
谓词通常用于简单的支持通配符的模式匹配。
所有 SQL 数据库中支持的通配符为
- _: (单字符通配符)
- %: (多字符通配符)
使用 jOOQ,可以从任何列表达式创建 LIKE
谓词,如下所示
TITLE LIKE '%abc%' TITLE NOT LIKE '%abc%'
BOOK.TITLE.like("%abc%") BOOK.TITLE.notLike("%abc%")
-- Generated SQL is using a bind variable TITLE LIKE '%abc%' TITLE NOT LIKE '%abc%'
// abc might be user input BOOK.TITLE.like("%" + abc "%") BOOK.TITLE.notLike("%" + abc + "%")
使用 LIKE 谓词转义操作数
通常,您的模式可能包含任何通配符 "_"
和 "%"
,在这种情况下,您可能需要转义它们。 jOOQ 不会自动转义 like()
和 notLike()
方法中的模式。 相反,您可以显式定义一个转义字符,如下所示
TITLE LIKE '%The !%-Sign Book%' ESCAPE '!' TITLE NOT LIKE '%The !%-Sign Book%' ESCAPE '!'
BOOK.TITLE.like("%The !%-Sign Book%", '!') BOOK.TITLE.notLike("%The !%-Sign Book%", '!')
在上面的谓词表达式中,感叹号字符作为转义字符传递,以转义通配符 "!_"
和 "!%"
,以及转义字符本身:"!!"
有关使用 LIKE
谓词转义模式的更多详细信息,请参阅数据库手册。
jOOQ 使用 LIKE 谓词的便捷方法
jOOQ 还为使用 LIKE
谓词对字符串执行的常见操作提供了一些便捷方法。 典型的操作是“包含谓词”、“以谓词开头”、“以谓词结尾”等。
-- case insensitivity LOWER(TITLE) LIKE LOWER('%abc%') LOWER(TITLE) NOT LIKE LOWER('%abc%') -- contains and similar methods TITLE LIKE '%' || 'abc' || '%' TITLE LIKE 'abc' || '%' TITLE LIKE '%' || 'abc'
// case insensitivity BOOK.TITLE.likeIgnoreCase("%abc%") BOOK.TITLE.notLikeIgnoreCase("%abc%") // contains and similar methods BOOK.TITLE.contains("abc") BOOK.TITLE.startsWith("abc") BOOK.TITLE.endsWith("abc")
请注意,jOOQ 在上述某些谓词实现中转义了值中的 %
和 _
字符。 为简单起见,本手册中省略了这一点。
有关此谓词的二进制版本,请参阅LIKE 谓词(二进制)。
方言支持
此示例使用 jOOQ
BOOK.TITLE.like("%abc%")
翻译成以下特定方言的表达式
所有方言
BOOK.TITLE LIKE '%abc%'
使用 jOOQ 3.21 生成。早期 jOOQ 版本的支持可能有所不同。 在我们的网站上翻译您自己的 SQL
反馈
您对此页面有任何反馈吗? 我们很乐意听取您的意见!