2017-01-09 4 views
1

現在、JOOQを使用してpostgresql DBからデータを取得しています。それから、データ型が配列型のデータを得るために問題に直面しました。JOOQで 'ANY'関数を使用する方法

現在の状態は以下のようなものです:

表のスキーマは次のとおりです。

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

サンプル・データは次のとおりです。

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

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

最初のデータを取得するには、SQLは次のようです

しかし、私はcann上記のようなSQLをJOOQで作成します。

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

JOOQでANY機能を使用できますか? 可能であれば、どうすればJOOQで作成できますか? そうでなければ、JOOQで同じ結果を得る他の方法はありますか?

ありがとうございます。

答えて

1

はこのようにそれを実行します。

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

上記のクエリはDSL.any(Field<T[]>)

+0

を使用していますありがとうございました。これは大文字と小文字を区別しますか? – tsuxkky

+0

大文字小文字を区別せず、部分的にマッチすることはできますか?たとえば、 'likeIgnoreCase(" OraNge ")'や 'like("%ang% ")'? @LukasEderへの – tsuxkky

+0

。 – tsuxkky

関連する問題