使用scala播放anorm和mysql,我尝试进行sql查询,使用LIKE运算符进行过滤:
import java.sql.Connection
import anorm._
Class.forName("com.mysql.jdbc.Driver").newInstance()
implicit val conn = java.sql.DriverManager.getConnection(dbUrl)
val list = SQL"select firstName from person where lastName like '%tra%'".as(parser.*)
Exception in thread "main" java.lang.RuntimeException: No parameter value for placeholder: 1
这里应该过滤所有lastName包含'tra'字符串的人。 为什么不工作? 是一个将'%'视为特殊字符的anorm(或java dbc)?如果是这样,如何逃避这个?
答案 0 :(得分:1)
如果您期望WHERE子句类似于'%pattern%'在将它作为参数传递之前,你必须准备字符串。
SQL"""SELECT firstName FROM person WHERE lastName LIKE ${"%"+tra+"%"}""".
as(userParser.*)