Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Scala Doobie在使用或在何处使用时不会返回任何内容_Scala_Doobie - Fatal编程技术网

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