【问题标题】:Substring SQL Query Variable [duplicate]子字符串 SQL 查询变量 [重复]
【发布时间】:2020-02-12 02:16:33
【问题描述】:

我正在尝试在数据库中查询子字符串,我正在将表单中的字符串变量替换为查询。它给了我一个语法错误。

这是错误:

LINE 1: SELECT * FROM books WHERE title LIKE '%'sometext'%'
[SQL: SELECT * FROM books WHERE title LIKE '%%''%(form)s''%%']
[parameters: {'form': 'some'}]

这是查询:

books = db.execute("SELECT * FROM books WHERE title LIKE '%:form%'", {"form":form.search.data}).fetchall()

如果我在 SQL 查询中使用实际字符串,它就可以工作。这是使用变量的问题。任何帮助将不胜感激。

【问题讨论】:

  • 你不能使用format在SQL语句之外添加like操作符吗?即在您的参数字典中
  • 你正在使用哪个数据库???
  • @scaisEdge 使用 postgres,CONCAT 函数有效
  • @aws_apprentice 我可以在查询之外构建字符串,让它与 CONCAT 一起工作

标签: python sql variables sqlalchemy


【解决方案1】:

你可以尝试使用 concat 来避免引用和 windchar 问题

books = db.execute("SELECT * 
      FROM books 
      WHERE title LIKE concat('%',:form, '%')" , 
     ........

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-13
    相关资源
    最近更新 更多