【问题标题】:SQL LIKE not functioning with space after query [duplicate]查询后 SQL LIKE 无法使用空格 [重复]
【发布时间】:2021-03-17 21:58:16
【问题描述】:

我正在尝试使用 LIKE 函数创建搜索功能,以根据作者/标题或在表单中输入的类型(我正在使用 sqlite)输出所有可用的书籍。

我使用的一段代码如下:

# User reached route via POST (submitting the form)
else:
    query = request.form.get("query")

    # Ensure query is not blank
    if not query:
        return apology("you haven't typed anything!", 400)

    # Implementing search
    books = db.execute("SELECT author, title, genre, id FROM books WHERE booked = 0 AND (author LIKE '%' || :query || '%' OR title LIKE '%' || :query || '%' OR genre LIKE '%' || :query || '%')",
                      query = query)

但是,用户通常会键入 query 后跟一个空格(尤其是在移动设备上)。在这种情况下,代码不起作用。

  1. 如何解决查询后有空格的情况并解决此问题?
  2. 是否可以考虑无限数量的空间?例如。如果我在后面打印 2 个空格?

谢谢!

【问题讨论】:

  • 使用 strip(): query = request.form.get("query").strip() 删除任何前导或尾随空格。

标签: python sqlite


【解决方案1】:

如果您不想在查询的任何一端出现空白,您可以修剪输入:

query = request.form.get("query").strip();

这也确保在查询仅包含空格时执行if not query 部分。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-06
    相关资源
    最近更新 更多