Lua Sqlite3 Prepare Statement 中百分号的转义

我有一个语句:

(db 是一个 sqlite3 实例)

local stmt = db:prepare("SELECT id, name FROM table WHERE name LIKE '%?%'")
if stmt:bind_values("test") == sqlite3.OK then
   ....
end

然而,我遇到了这个错误:

Incorrect number of parameters to bind (1 given, 0 to bind)

似乎没有将 ? 视为参数。 我尝试过各种转义,从百分号的 %% 到 \ 和 \\,甚至更多......这让我发疯了。

谁知道如何解决这个问题?谢谢!

点赞
用户118068
用户118068

你不能在引号内放置参数:

正确写法:   SELECT ... WHERE foo = ?
错误写法:   SELECT ... WHERE foo = '?'

有引号的话,它只是一个包含问号的字符串。没有引号,它就是一个占位符。

你必须逐步构建LIKE,例如:

... WHERE foo LIKE '%' || ? || '%'
2016-07-07 21:05:00