Postgresql Scala,Quill-如何在Quill查询中使用SQL IN子句?

Postgresql Scala,Quill-如何在Quill查询中使用SQL IN子句?,postgresql,scala,quill,scala-cats,Postgresql,Scala,Quill,Scala Cats,我有一个数据库,该模型如下所示: case class Data { id: Int, value: Json } 我想创建搜索查询,它可以通过csv从valueJSON中过滤一些字段: def search(id: Int) = { .... val list = List("value1", "value2", "value3") quote( myTable.filter( t => t.id

我有一个数据库,该模型如下所示:

case class Data {
  id: Int, 
  value: Json
}
我想创建搜索查询,它可以通过
csv
value
JSON中过滤一些字段:

def search(id: Int) = {
  ....
  val list = List("value1", "value2", "value3")
  quote(
    myTable.filter( t => t.id == lift(id)))
    .dynamic
    .filter(_ => liftQuery(list).contains(infix""" t.name """.pure.as[Boolean]))
}
问题是它不能很好地工作。我不知道如何用另一种方式在子句中使用
value
是一个包含字段
name
的JSON,现在我想搜索
myTable
中适合传入
列表的值的所有元素。
我也试着做一些类似的事情:

infix""" t.name in ${list.mkString(",")} """.pure.as[Boolean]
但它也不起作用。你能帮我解决吗?在quill文档中的
子句中没有很好的
示例。

quote(查询[数据].filter(d=>liftQuery(列表).contains(中缀“value->>“name”))
结果:

SELECT d.id, d.value FROM data d WHERE value->>'name' IN (?, ?, ?)

因此,
value
列中的值是具有字段
name
的JSON对象,如下所示:
{“name”:“value1”}
?您希望找到列表中包含
name
值的所有行,如此查询中所示:
select*from data where value->>name'in('value1','value2')?是的,正是我想做的。嗯,看起来和我试过的一样。在上面的示例中,您的代码和我的代码有什么区别:
过滤器(=>liftQuery(list).contains(中缀“.t.name”“”.pure.as[Boolean])
?我使用
->
访问JSON对象字段的字符串值。有关更多详细信息,请参阅。另外,我删除了
.pure.as[Boolean]
,因为它不需要。