我一直在寻找一种在 jOOQ 中实现以下查询的方法,但找不到任何东西。
SELECT *
FROM tableName
WHERE 'this is a string' LIKE CONCAT('%', word ,'%')
提前致谢。
最佳答案
这里有两件事值得一提:
- 如何在
LIKE
谓词左侧创建绑定(bind)变量 - 如何在 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/