使用参数化文本搜索准备SQL语句的正确方法

时间:2013-06-17 00:09:06

标签: sql groovy groovy-sql

突然间,我意识到虽然这种方式在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。

我的问题是:

  • 是故意以这种方式实施的吗?我从来不需要进行参数化文本搜索,所以我不确定这种行为在哪里是典型的。
  • 我怎样才能安全地通过文本搜索对语句进行参数化?

1 个答案:

答案 0 :(得分:2)

我相信您希望在参数中包含%,例如:

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