我遇到了以下问题。
我的搜索方法很好用:
override def search(code: Option[String],
title: Option[String],
employmentStatusCd: Option[Int],
employerId: Int) = MDB {
from(table)((p) =>
where(
(p.code like code.map(v => s"%$v%").?)
and (p.title like title.map(v => s"%$v%").?)
and (p.employmentStatusCd === employmentStatusCd.?)
and (p.employerId === employerId))
.select(p)
).toList
}
如何改进它以使搜索处理不区分大小写? 我知道我可以使用lower(...),例如:
(lower(pos.title) like lower(s"%$value%"))
但是在这个例子中,属性' title'不是可选的。如何组合可选属性
(title.map(v => s"%$v%").?)
使用lower(...)使搜索不区分大小写?
如果我写下一个,我会得到一个例外:
lower(title.map(v => s"%$v%").?)
答案 0 :(得分:0)
感谢 jcern 澄清。
正确的方法是:
override def search(code: Option[String],
title: Option[String],
employmentStatusCd: Option[Int],
employerId: Int) = MDB {
from(table)((p) =>
where(
(lower(p.code) like code.map(v => s"%${v.toLowercase}%").?)
and (lower(p.title) like title.map(v => s"%${v.toLowercase}%").?)
and (p.employmentStatusCd === employmentStatusCd.?)
and (p.employerId === employerId))
.select(p)
).toList
}
我们不需要使用服务器函数来使常量字符串小写。