gpt4 book ai didi

scala - 灵活的查询过滤器作用于任意列

转载 作者:行者123 更新时间:2023-12-03 21:36:06 25 4
gpt4 key购买 nike

假设我有一个包含列的 SQL 表 xy ,每个整数值。我可以做一个 Slick 查询来选择 5 <= x <= 10像这样:

val myQuery = TableQuery[MyXYTable]
myQuery.filter(p => p.x >= 5 && p.x <= 10)

现在假设我想同时过滤 5 <= y <= 10以及。我想重新使用相同的过滤器逻辑,但这次将其应用于 y柱子。有没有办法在 Slick 中做到这一点?即编写一个过滤器函数,并传入一个参数来指定它应该过滤哪一列?所以我会有类似的东西:
myQuery.addFiveTenFilter(x-column).addFiveTenFilter(y-column)

如果我正在编写原始 SQL,这将是非常微不足道的,但我看不出如何使用 Slick 语法来做到这一点。

最佳答案

如果您创建一个类型为 Rep[Int] => Rep[Boolean] 的函数,您可以在 filter 中使用它方法并将列传入:

// As a function literal.
val filterByFiveTen: (Rep[Int] => Rep[Boolean]) = { column =>
column >= 5 && column <= 10
}
myQuery.filter(row => filterByFiveTen(row.xColumn))

// As a method.
def filterByFiveTen(column: Rep[Int]): Rep[Boolean] = {
column >= 5 && column <= 10
}
myQuery.filter(row => filterByFiveTen(row.xColumn))

关于scala - 灵活的查询过滤器作用于任意列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35621130/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com