[英]Playframework Slick DB Filter Operation
考虑将以下两个字符串作为记录,保存在列C1中。 S1:“ MyValue1-myValue2” S2:“ MyValue1-myValue2-myValue3”
以下查询将列出上面的字符串,而不进行任何过滤操作。
play.Logger.info("projectList: " + ((for { t <- Table } yield t).map{_.C1}.list))
问:我想按连字符('-')筛选列表
我尝试了以下查询,但无法正常工作
play.Logger.info("projectList: " + ((for { t <- Table if (t.C1.toString().split("-").length == someLength } yield t).map{_.C1}.list))
其中someLength等于2或3。在光滑的DB中使用字符串操作作为过滤器进行播放框架的想法吗?
toString不是Slick方法。 一旦使用它,您就可以离开数据库查询的领域,并以您可能不期望的方式在客户端上进行操作。 以下是所有受支持的方法: http : //slick.typesafe.com/doc/2.1.0/api/#scala.slick.lifted.StringColumnExtensionMethods
您可能可以这样做:
.filter(t => (t-size - t.replace("-","").size) === someLength)
我使用.filter来使用字符串操作。 感谢@cvogt的帮助。
解:
((for { t <- Table } yield t).list.filter{ t => t.split("-").length == someLength})
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.