jOOQ 中的字符串 LIKE 列

string LIKE column in jOOQ

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

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

提前致谢。

如果你这样使用就可以了

SELECT * FROM   TableName WHERE  ColumnName LIKE CONCAT('%','item', '%')

jOOQ会是这样的

DSLContext create = DSL.using(connection, dialect);

  CREATE.Select * .from(TableName).WHERE 
 (TableName.ColumnName.LIKE CONCAT ('%item%'))
 .EXECUTE()

这里有两点值得一提:

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

1。绑定变量

为此使用 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(),因为这将创建一个字符串文字(内联绑定变量),而不是普通的绑定变量。更多信息在这里:

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();