【问题标题】:How to use 'ANY' function with JOOQ如何在 JOOQ 中使用“任何”功能
【发布时间】:2017-05-23 15:43:09
【问题描述】:

我目前使用 JOOQ 从 postgresql 数据库中获取数据。然后我遇到了获取数据类型为数组类型的数据的问题。

目前情况如下:

表架构是:

CREATE TABLE favorites (
    id int,
    items    varchar(100)[]
);

样本数据是:

INSERT INTO favorites (id, items)
    VALUES (1, '{orange, lemon, banana}');
INSERT INTO favorites (id, items)
    VALUES (2, '{apple, grape}');

要获取第一条数据,SQL 是这样的:

SELECT id, items FROM favorites WHERE 'orange' = ANY (items);

但是,我无法使用 JOOQ 创建上述 sql。

Connection connection = ...;
DSLContext context = DSL.using(connection, ...);
List<Table> table = context.select().from(TABLE).fetchInto(class.TABLE);

我可以在 JOOQ 中使用任何功能吗? 如果可能,我如何使用 JOOQ 创建它。 如果没有,还有其他方法可以使用 JOOQ 获得相同的结果吗?

提前谢谢你。

【问题讨论】:

    标签: java sql postgresql jooq


    【解决方案1】:

    这样做:

    List<TableRecord> table = context
        .selectFrom(TABLE)
        .where(val("orange").eq(any(TABLE.ITEMS)))
        .fetch();
    

    以上查询使用DSL.any(Field&lt;T[]&gt;)

    【讨论】:

    • 非常感谢。这是区分大小写的,不是吗?
    • 是否可以不区分大小写和部分匹配如:例如,使用likeIgnoreCase("OraNge")like("%ang%")
    • @tsuxkky:嗯,这是一个完全不同的查询。介意问一个新问题吗?
    • 没关系。我已经问了一个新问题。如果您不介意,请也检查一下。 stackoverflow.com/questions/41557902/…
    猜你喜欢
    • 1970-01-01
    • 2019-08-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-05
    • 2021-03-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多