You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何过滤Option类型列中的None值并提取List[String]集合

你写的代码没有得到预期结果,核心是你混淆了Quill Query 容器的flatMap和Scala 集合/Option的flatMap的作用。
query[Anm].map(_.anmKey)得到的是Query[Option[String]]类型,你直接对它调用.flatMap(_),Quill会将该操作解析为数据库层面的JOIN逻辑,而非你预期的“过滤None、提取Option内部的String值”。

可行的两种解决方案:

  • 方案1:数据库层面过滤空值,直接返回List[String]
    用nonEmpty过滤掉anmKey为NULL的行,再直接取Option的值即可,生成的SQL会自带WHERE anm_key IS NOT NULL的条件,性能更好:
    run(query[Anm].filter(_.anmKey.nonEmpty).map(_.anmKey.get))
    
  • 方案2:内存层面处理结果,适合需要保留空值做后续其他逻辑的场景
    先把所有anmKey查出来得到List[Option[String]],再用Scala集合自带的flatten方法过滤None提取值:
    run(query[Anm].map(_.anmKey)).flatten
    

内容的提问来源于stack exchange,提问作者user3416742

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 10:48:04