Slick - 如果列为空,则过滤行

Posted

技术标签:

【中文标题】Slick - 如果列为空,则过滤行【英文标题】:Slick - Filter Row if Column is Null 【发布时间】:2015-04-04 07:29:47 【问题描述】:

如果列为空,我如何过滤 Slick 中的行?

val employees = Queryable[Employees]

// Error
val query = employees.filter( _.terminationDate == Nil )

可能需要注意的是

terminationDate: Option[String]

我正在使用直接嵌入。

【问题讨论】:

【参考方案1】:

Slick 有自己的原因检查列中的空值:

val query = employees.filter(_.terminationDate.isNull)

相反的是isNotNull

或者在较新版本的 Slick 中:

val query = employees.filter(_.terminationDate.isEmpty)

val query = employees.filter(_.terminationDate.isDefined)

【讨论】:

我以为会是这样,但使用您的代码我得到:Type mismatch. Expected (Employees) => Boolean, actual (Employees) => Any 老实说,我无法重现您的错误,而且该错误似乎并不相关。 我使用的是直接嵌入。也许这就是原因。 我在使用带有常规提升嵌入的代码时遇到错误。你也在使用第 2 版吗? @CharlieBrown 它应该仍然可以工作 - 只要您的列被定义为 column[Option[SomeType]] 而不是 column[SomeType]。我认为isEmptyisDefined 只定义在Rep[Option[_]] 类型的列上

以上是关于Slick - 如果列为空,则过滤行的主要内容,如果未能解决你的问题,请参考以下文章

SQL - 如果列为空,则列出所有数据

如果另一列为空,则选择一列

如果 Oracle OBIEE 中的列为空,则隐藏数据透视表中的列

ArrayBlockingQueue源码分析

ArrayBlockingQueue源码分析

如果一个表列为空,如何从另一个表中获取值