0

突然间,我意识到虽然这在 groovy 中可以正常工作,但就像预期的那样:

Sql.newInstance(connectionParams).rows("SELECT FROM ITEMS WHERE id = ?", [200])

这行不通

Sql.newInstance(connectionParams).rows("SELECT FROM ITEMS WHERE name LIKE '%?%'", ["some"])

你能得到的只有

执行失败:SELECT FROM ITEMS WHERE name LIKE '%?%' 因为:列索引超出范围:1,列数:0。

我的问题是:

  • 是故意这样实现的吗?我从来不需要参数化文本搜索,所以我不确定这种行为在哪里是典型的。
  • 尽管如此,我如何安全地参数化带有文本搜索的语句?
4

1 回答 1

2

我相信您想%在参数中包含 's,例如:

Sql.newInstance(connectionParams).rows("SELECT FROM ITEMS WHERE name LIKE ?", ["%some%"])
于 2013-06-17T00:46:48.740 回答