2009-07-09 31 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