我一直在寻找一种在jOOQ中实现以下查询但无法找到任何内容的方法。
SELECT *
FROM tableName
WHERE 'this is a string' LIKE CONCAT('%', word ,'%')
提前致谢。
答案 0 :(得分:4)
这里有两件事值得一提:
LIKE
谓词只需使用DSL.val(String)
,例如:
Field<String> field = val("this is a string");
然后,您可以像查询任何其他Field
使用DSL.concat(Field...)
方法。 E.g:
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();
答案 1 :(得分:0)
如果你像这样使用
,它会起作用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()