Available in versions: Dev (3.21) | Latest (3.20) | 3.19 | 3.18 | 3.17 | 3.16 | 3.15 | 3.14 | 3.13 | 3.12

SIMILAR TO谓词

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

SIMILAR TO predicates 因其支持更复杂的通配符和正则表达式匹配而广受欢迎。

所有 SQL 数据库中支持的通配符包括:

  • _: (单字符通配符)
  • %: (多字符通配符)

使用 jOOQ,可以像这样从任何 列表达式 创建 SIMILAR TO predicate:

TITLE     SIMILAR TO '%abc%'
TITLE NOT SIMILAR TO '%abc%'
BOOK.TITLE.similarTo("%abc%")
BOOK.TITLE.notSimilarTo("%abc%")

为 SIMILAR TO predicate 转义操作数

通常,您的模式可能包含通配符字符 "_""%",在这种情况下,您可能希望转义它们。jOOQ 不会自动转义 similarTo()notSimilarTo() 方法中的模式。相反,您可以像这样显式定义转义字符:

TITLE     SIMILAR TO '%The !%-Sign Book%' ESCAPE '!'
TITLE NOT SIMILAR TO '%The !%-Sign Book%' ESCAPE '!'
BOOK.TITLE.similarTo("%The !%-Sign Book%", '!')
BOOK.TITLE.notSimilarTo("%The !%-Sign Book%", '!')

在上述 predicate 表达式中,感叹号字符被用作转义字符,用于转义通配符字符 "!_""!%",以及转义转义字符本身:"!!"

有关使用 SIMILAR TO predicate 转义模式以及支持的正则表达式语法的更多详细信息,请参阅您的数据库手册。

方言支持

此示例使用 jOOQ

BOOK.TITLE.similarTo("%X%")

翻译成以下特定方言的表达式

Aurora Postgres, BigQuery, CockroachDB, DuckDB, Exasol, Firebird, Postgres, Snowflake, YugabyteDB

BOOK.TITLE SIMILAR TO '%X%'

ASE, Access, Aurora MySQL, ClickHouse, DB2, Databricks, Derby, H2, HSQLDB, Hana, Informix, MariaDB, MemSQL, MySQL, Oracle, Redshift, SQLDataWarehouse, SQLServer, SQLite, Sybase, Teradata, Trino, Vertica

/* UNSUPPORTED */
使用 jOOQ 3.21 生成。早期 jOOQ 版本的支持可能有所不同。 在我们的网站上翻译您自己的 SQL

反馈

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

The jOOQ Logo