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

前端之家收集整理的这篇文章主要介绍了scala – 如何在Slick 3.x中使用回退查询可选列值前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我想在Slick中编写一个查询,如果它不是null,则获取一个列,如果是null,则默认为另一个列的值.如何在不重复调用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相关文章