Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/82.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用参数化文本搜索准备SQL语句的正确方法_Sql_Groovy_Groovy Sql - Fatal编程技术网

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

使用参数化文本搜索准备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"]) 你能得到的只是 无法执行:从名称为“%”?%的项中选择,因为:

突然间我意识到,虽然这在groovy中可以像在Expeceded中一样工作:

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%"])

嗯,这是我第一次尝试,但失败了,你确定这对你有用吗?另外,我也不知道为什么这实际上应该起作用,而在第一种情况下它不应该起作用