使用参数化文本搜索准备SQL语句的正确方法
突然间我意识到,虽然这在groovy中可以像在Expeceded中一样工作:使用参数化文本搜索准备SQL语句的正确方法,sql,groovy,groovy-sql,Sql,Groovy,Groovy Sql,突然间我意识到,虽然这在groovy中可以像在Expeceded中一样工作: Sql.newInstance(connectionParams).rows("SELECT FROM ITEMS WHERE id = ?", [200]) 这行不通 Sql.newInstance(connectionParams).rows("SELECT FROM ITEMS WHERE name LIKE '%?%'", ["some"]) 你能得到的只是 无法执行:从名称为“%”?%的项中选择,因为:
Sql.newInstance(connectionParams).rows("SELECT FROM ITEMS WHERE id = ?", [200])
这行不通
Sql.newInstance(connectionParams).rows("SELECT FROM ITEMS WHERE name LIKE '%?%'", ["some"])
你能得到的只是
无法执行:从名称为“%”?%的项中选择,因为:
列索引超出范围:1,列数:0
我的问题是:
- 它是故意这样实施的吗?我从来不需要参数化的文本搜索,所以我不确定这种行为是否典型李>
- 然而,如何安全地使用文本搜索对语句进行参数化
%
,例如:
Sql.newInstance(connectionParams).rows("SELECT FROM ITEMS WHERE name LIKE ?", ["%some%"])
嗯,这是我第一次尝试,但失败了,你确定这对你有用吗?另外,我也不知道为什么这实际上应该起作用,而在第一种情况下它不应该起作用