如何在sqlite中使用占位符执行SELECT * LIKE语句?

时间:2014-01-03 12:57:59

标签: python sql sqlite

我有一个论点tag,我就是这样做的:

cursor.execute("SELECT * FROM posts WHERE tags LIKE '%?%'", (tag,))

但它似乎不起作用。
 我是sqlite的新手,请告诉我如何修复它。谢谢!

2 个答案:

答案 0 :(得分:5)

将通配符应用于参数,而不是SQL:

cursor.execute("SELECT * FROM posts WHERE tags LIKE ?", ('%{}%'.format(tag),))

? SQL参数插值为您添加引号,因此您的查询最终为'%'value'%',这是无效的SQL。

答案 1 :(得分:1)

删除%

cursor.execute("SELECT * FROM posts WHERE tags LIKE ?", (tag,))

这应该按照您的需要进行格式化。例如,如果tag == 'test'完整查询为:

SELECT * FROM posts WHERE tags LIKE 'test'