Подтвердить что ты не робот

Можно ли использовать предложение IN в plain sql Slick?

Например, я хочу создать следующий запрос:

SELECT c.* FROM Coffees c WHERE c.name IN ('robusta', 'arabica')

Моя попытка не удалась:

val cnames = List("robusta", "arabica")
sql""" SELECT c.* FROM Coffees c WHERE c.name IN ${cnames} """
  could not find implicit value for parameter pconv: 
  scala.slick.jdbc.SetParameter[List[String]]

Можно ли как-то использовать предложение in в Slick простых sql-запросах?

4b9b3361

Ответ 1

Я не вижу ничего из коробки, чтобы справиться с этим. Лучше всего, наверное, что-то вроде этого:

val cnames = List("robusta", "arabica").map("'" + _ + "'").mkString(",")
val query = sql""" SELECT c.* FROM Coffees c WHERE c.name IN (${cnames}) """

Ответ 3

Хотя это не безопасно для SQL-инъекции, вы можете использовать интервал #$:

val ids = idList.map("'" + _ + "'").mkString(",")
val q = sql"""select name from mytable where id in (#$ids)"""