假设我的查询如下所示:
q = SELECT * FROM MY_TABLE WHERE FIELD LIKE ?
cursor.execute(q, some_query_value)
这似乎不是在进行“包含”搜索,所以我尝试这样做
q = SELECT * FROM MY_TABLE WHERE FIELD LIKE %?%
cursor.execute(q, some_query_value)
但是python好像不喜欢这样。正确的做法是什么?
最佳答案
%
通配符是要插入的值的一部分;使用字符串连接或格式化将其添加到要搜索的值中,而不是在查询中:
q = "SELECT * FROM MY_TABLE WHERE FIELD LIKE ?"
cursor.execute(q, ('%' + some_query_value + '%',))
或
q = "SELECT * FROM MY_TABLE WHERE FIELD LIKE ?"
cursor.execute(q, ('%{}%'.format(some_query_value),))
现在 sqlite3
可以正确引用带通配符的值进行插值。
关于Python SQLite 如何使用 '?' 占位符进行部分搜索?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29849754/