2
Могу ли я использовать внутри-предложения с помощью SQL Interpolation от ScalikeJDBC? напримерВ статьях с sql-интерполяцией
val ids = Set(1,2,3,5)
sql"""update foo set bar=${bar} where id in ${ids}""".update().apply()
Это не удается, потому что ids
не интерполировано.
sql"""update foo set bar=${bar} where id in (${ids.mkString(",")})""".update().apply()
Это также терпит неудачу, потому что выражение intepreted как строка, а не список чисел. например ... where id in ('1,2,3,5')
Вы совершенно правы. Я не знаю, что я делал неправильно раньше. Я вернулся к тому, что, как я думал, сначала пытался, и теперь он работает.あ り が と う – Synesso
Не уверен, была ли причиной проблема OP, но если вы случайно используете коллекции Java, вы без проблем получаете аберрантное интерполяционное поведение: 'scala> sql" "" update foo set bar = 1 где id in ($ {Set (5, 1, 2, 3, 4) .asJava}) "" ". Statement' дает ' res2: String = update foo set bar = 1 где id в (?) '. Это вызвало некоторые проблемы для меня; Я могу указать ошибку в файле scalikejdbc. –
Я подал ошибку [ScalikeJDBC] (https://github.com/scalikejdbc/scalikejdbc/issues/469). –