jooq - jOOQ 中的字符串 LIKE 列

标签 jooq

我一直在寻找一种在 jOOQ 中实现以下查询的方法,但找不到任何东西。

SELECT *
FROM   tableName
WHERE  'this is a string' LIKE CONCAT('%', word ,'%')

提前致谢。

最佳答案

这里有两件事值得一提:

  1. 如何在 LIKE 谓词左侧创建绑定(bind)变量
  2. 如何在 SQL 中创建串联

1。绑定(bind)变量

只需使用 DSL.val(String)为此,例如:

Field<String> field = val("this is a string");

然后,您可以在查询中使用它,就像任何其他 Field 一样。

2。连接

使用DSL.concat(Field...)方法用于此。例如:

Field<String> concatenated = concat(inline("%"), TABLENAME.WORD, inline("%"));

请注意,我正在使用 DSL.inline(String)这里,不是 val() 因为这将创建一个字符串文字(内联绑定(bind)变量),而不是普通的绑定(bind)变量。更多信息请参见:

https://www.jooq.org/doc/latest/manual/sql-building/bind-values/inlined-parameters

完整查询:

DSL.using(configuration)
   .selectFrom(TABLENAME)
   .where(val("this is a string").like(concat(
        inline("%"), TABLENAME.WORD, inline("%")
    )))
   .fetch();

关于jooq - jOOQ 中的字符串 LIKE 列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42361878/

相关文章:

entity-framework - SQL 方言实际上如何在 hibernate 和 JOOQ 等框架中内部工作

java - <R extends TableRecord<R>> 在 Java 中是什么意思?

postgresql - Jooq 中的条件 onDuplicateKeyUpdate

java - jOOQ:如何使用 MySQL “BINARY” 运算符创建选择查询?

java - jooq 字符串到整数的转换

java - JOOQ & 交易

java - jOOQ .fetchMap() 与转换器

java - 在JOOQ中使用PL/SQL函数

java - jOOQ 使用Where 子句更新查询

java - 使用转换器将 jOOQ 记录转换为 POJO