在anorm中转义字符串插值

时间:2016-10-07 15:36:20

标签: scala anorm

我想使用anorm 2.5.2将文字'${a}'插入表中,这意味着我想执行裸SQL查询

INSERT INTO `db`.`table` (`a`) VALUES ('${a}');

不使用任何anorm / string插值。当我尝试执行以下操作时

SQL("INSERT INTO `db`.`table` (`a`) VALUES ('${a}');").execute()

我收到anorm.Sql$MissingParameter: Missing parameter value个异常,因为它尝试在${a}上使用anorm插值,但范围内没有值a

如何转义anorm / string插值$...${...}

Escape a dollar sign in string interpolation似乎不适用于此。

1 个答案:

答案 0 :(得分:0)

您可以使${a}参数的值,即

SQL("""INSERT INTO db.table (a) VALUES ({x})""").on("x" -> s"$${a}")

s"$${a}"是在没有收到有关可能缺少插补器的警告的情况下编写"${a}"的方法。

同样可以写成

val lit = s"$${a}"
SQL"""INSERT INTO db.table (a) VALUES ($lit)"""

以下可能有效,但我不确定:

SQL"INSERT INTO db.table (a) VALUES ('$${a}')"

也许值得问一下它是故意行为还是一个错误:在谈论参数化SQL查询时,在 '内部有一个参数是没有意义的。