gpt4 book ai didi

scala - 如何在 Slick 3.x 中使用回退查询可选列值

转载 作者:行者123 更新时间:2023-12-05 00:18:16 25 4
gpt4 key购买 nike

我想在 Slick 中编写一个查询,如果它不为空,则获取一列,或者如果它为空,则默认为另一列的值。如何在不重复调用 db.run 的情况下做到这一点?

最佳答案

假设您的表定义如下所示:

import slick.driver.PostgresDriver.api._ // Import your driver here

class EmployeesTable(tag: Tag) extends Table[(Option[Int], Int)](tag, "employees") {
def firstCol = column[Option[Int]]("first_col") // This column is nullable
def secondCol = column[Int]("second_col") // This column is non-nullable

def * = (firstCol, secondCol)
}

那么您的查询可能如下所示:
val query = TableQuery[EmployeesTable].map(employee => employee.firstCol.ifNull(employee.secondCol))
val result: Future[Seq[Int]] = db.run(query.result)

这样 first_col 中的每个空值将被来自 second_col 的值替换.这将等效于以下 SQL 查询:
select coalesce("first_col", "second_col") from "employees"

关于scala - 如何在 Slick 3.x 中使用回退查询可选列值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38282224/

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