我正在努力为我的查询添加其他条件 . 在最简单的形式,我需要的是如下所示:
def findPeople(name: String, maybeSurname: Option[String]) = {
val sql1 = sql"select * from my_table where name = $name"
val sql2 = maybeSurname.map( surname => sql"and col2 = $surname" ).getOrElse(sql"")
val finalSql = sql1 + sql2 // I need this kind of feature
...
...
}
使用#$可能是一个选项,但是姓氏不会是绑定变量,这是一个大问题 .
2 回答
这是一个关于光滑3.1.x的示例测试
然后
我认为绑定变量不是由map函数解释的 . 它们由Slick sql插值器解释 . 这就是为什么你的sql2不会获得姓氏值 .
如果需要编写SQL语句,也许可以考虑不使用Plain SQL功能 . 你能做.filter(.name ==== name).filter(.col2 === surname)吗?