2009-07-09 56 views
19

中使用sqlite3内具有约束力,如果我的查询是SQLite的字符串字面

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

将匹配包含x字符串。我想打一个x绑定参数,如:

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

然而,这并不因为''形式的字符串文字工作。在文字中是否有某种逃避?的方法?我明白,我可以建立可绑定的参数包含%然后用

SELECT * FROM table WHERE title LIKE ?

但这种移动责任融入到我的代码在处理SQL注入,而不是绑定接口方面。有更好的解决方案吗?

回答

34
SELECT * FROM table WHERE title LIKE '%' || ? || '%'; 
+5

这不仅仅是sqlite; `||`在SQL标准中; Postgres和Oracle遵循这一点。 MySQL和MSSQL分别使用`CONCAT()`和`+`,两者都是非标准的。 – ephemient 2009-07-09 18:05:07