Scala Doobie在使用或在何处使用时不会返回任何内容
我试图从数据库中选择几个过滤器。代码:Scala Doobie在使用或在何处使用时不会返回任何内容,scala,doobie,Scala,Doobie,我试图从数据库中选择几个过滤器。代码: // name is List("Denis", "Semen") val query = name.map(_ + "%").mkString(" OR name LIKE ") sql"SELECT * FROM phonebook WHERE name LIKE ${query+"%"}" .query[Contact] .to[List] .transact(tr) 结果查询如下:SELECT*FROM phonebook,
// name is List("Denis", "Semen")
val query = name.map(_ + "%").mkString(" OR name LIKE ")
sql"SELECT * FROM phonebook WHERE name LIKE ${query+"%"}"
.query[Contact]
.to[List]
.transact(tr)
结果查询如下:SELECT*FROM phonebook,其中姓名如Denis%或姓名如Seem%
我什么也没得到。只有当SELECT只有一个名字时,我才能得到一些信息:SELECT*来自电话簿,其中的名字像Denis%
我也试过:
val query = name.map("'" + _ + "%'").mkString(" OR name LIKE ") // 'denis%' OR NAME LIKE 'benis%'
结果如下查询:从电话簿中选择*,其中姓名像“Jhon%”或姓名像“Lena%”
,但在Doobie中不需要使用”
,因此即使一个姓名也不会返回任何内容:从电话簿中选择*,其中姓名像“Jhon%”
插入值(查询
)在选择中用作参数值。因此,当您有多个姓名时,您的实际选择将类似于电话簿中的SELECT*,其中姓名类似于'Jhon%或姓名类似于Lena%'
(注意单引号的位置-它们包括短语'OR like')
在片段
值上使用++
来构建任意SQL语句。比如:
val query = name.map(name => fr"name LIKE ${name + "%"}").reduceOption((left, right) => left ++ fr" OR " ++ right).getOrElse(fr"1 = 0")
(sql"SELECT * FROM phonebook WHERE " ++ query)
.query[Contact]
.to[List]
.transact(tr)
我用{表示{n