【问题标题】:Sqlite binding within string literal字符串文字中的 Sqlite 绑定
【发布时间】:2010-11-09 11:31:09
【问题描述】:

使用 sqlite3,如果我的查询是

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

它将匹配包含x 的字符串。我想让x 成为一个可绑定的参数,比如:

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

但是,这不起作用,因为'' 形成了字符串文字。有没有办法在文字中转义??我知道我可以构建可绑定参数以包含 %,然后使用

SELECT * FROM table WHERE title LIKE ?

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

【问题讨论】:

    标签: sql binding sqlite


    【解决方案1】:
    SELECT * FROM table WHERE title LIKE '%' || ? || '%';
    

    【讨论】:

    • 不仅仅是 sqlite; || 在 SQL 标准中; Postgres 和 Oracle 遵循这一点。 MySQL和MSSQL分别使用CONCAT()+,都是非标准的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-11-06
    • 1970-01-01
    • 1970-01-01
    • 2015-09-13
    • 1970-01-01
    • 2012-07-29
    • 1970-01-01
    相关资源
    最近更新 更多