字符串文字中的Sqlite绑定

Ste*_*eld 23 sql sqlite binding

使用sqlite3,如果我的查询是

SELECT * FROM table WHERE title LIKE '%x%'

它将匹配包含的字符串x.我想创建x一个可绑定的参数,如:

SELECT * FROM table WHERE title LIKE '%x?%'

但是,这不起作用,因为''形成一个字符串文字.有没有办法逃避?文字内部?我知道我可以构建可绑定参数来包含%然后使用

SELECT * FROM table WHERE title LIKE ?

但是在处理SQL注入而不是绑定接口方面,这会将责任转移到我的代码中.这有更好的解决方案吗?

laa*_*lto 42

SELECT * FROM table WHERE title LIKE '%' || ? || '%';
Run Code Online (Sandbox Code Playgroud)

  • 这不仅仅是sqlite; `||`是SQL标准; Postgres和Oracle遵循这一点.MySQL和MSSQL分别使用`CONCAT()`和`+`,都是非标准的. (5认同)