2

いくつかのフィルターを使用してデータベースから選択しようとしています。コード:

// 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 WHERE name LIKE Denis% OR name LIKE Semen%

そして、私は何も得ません。SELECT の名前が 1 つだけの場合にのみ、何かを取得します: SELECT * FROM phonebook WHERE name LIKE Denis%

私もこれを試しました:

val query = name.map("'" + _ + "%'").mkString(" OR name LIKE ")  // 'denis%' OR NAME LIKE 'benis%'

結果クエリは次のようになりますSELECT * FROM phonebook WHERE name LIKE 'Jhon%' OR name LIKE 'Lena%'が、Doobie では を使用する必要がない'ため、1 つの名前でも何も返されません: SELECT * FROM phonebook WHERE name LIKE 'Jhon%'

4

1 に答える 1