【问题标题】:How to execute SELECT * LIKE statement with a placeholder in sqlite?如何在 sqlite 中使用占位符执行 SELECT * LIKE 语句?
【发布时间】:2014-01-03 12:57:59
【问题描述】:

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

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

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

【问题讨论】:

    标签: python sql sqlite


    【解决方案1】:

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

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

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

    【讨论】:

      【解决方案2】:

      删除%:

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

      这应该是你想要的格式。例如,如果tag == 'test' 完整的查询将是:

      SELECT * FROM posts WHERE tags LIKE 'test'
      

      【讨论】:

      • 谢谢,但我希望选择其中包含 tag 的任何记录,而不是仅选择 == tag。 :-)
      • 啊..我明白你的意思了。错过了。 :)
      猜你喜欢
      • 2011-11-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-25
      • 1970-01-01
      • 2019-11-15
      相关资源
      最近更新 更多