jOOQ中的字符串LIKE列

时间:2017-02-21 08:11:53

标签: jooq

我一直在寻找一种在jOOQ中实现以下查询但无法找到任何内容的方法。

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

提前致谢。

2 个答案:

答案 0 :(得分:4)

这里有两件事值得一提:

  1. 如何在LIKE谓词
  2. 的左侧创建绑定变量
  3. 如何在SQL中创建连接
  4. 1。绑定变量

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

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

    然后,您可以像查询任何其他Field

    一样在查询中使用此功能

    2。级联

    使用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()