You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Python3的SQLite3中查询包含可变子串的所有行?

在SQLite3中用变量实现LIKE模糊查询的正确方式

我懂你的痛点——直接用?占位符套变量的时候,没法自动带上LIKE需要的通配符,导致查询达不到预期效果对吧?其实问题出在通配符的处理上,咱们换个方式就能解决:

核心思路:把通配符和变量拼接后作为参数传入

不要在SQL语句里写%?%(这样SQLite会把?当成字符串的一部分,而不是占位符),而是先在Python代码里把通配符%和你的搜索变量拼接成完整的匹配模式,再通过?占位符传入,这样既保证了SQL注入安全,又能实现模糊查询。

完整代码示例

import sqlite3

# 你的搜索变量,替换成实际需要的值
search_term = "this_is_a_hard_coded_string"

# 拼接通配符,构建LIKE需要的匹配模式
like_pattern = f"%{search_term}%"

# 连接数据库并执行查询
conn = sqlite3.connect("your_database.db")
cursor = conn.cursor()

# 使用参数化查询,把拼接好的模式传进去
cursor.execute(
    "SELECT * FROM userTable WHERE UPPER(column) LIKE UPPER(?)",
    (like_pattern,)  # 注意这里是元组,即使只有一个参数也要加逗号
)

# 获取结果并处理
matching_rows = cursor.fetchall()
for row in matching_rows:
    print(row)

# 关闭连接
conn.close()

额外说明

  • 大小写处理:如果需要忽略大小写匹配,除了在SQL里用UPPER()包裹列和参数,你也可以直接在Python里把搜索变量转成大写,这样SQL语句可以简化成WHERE UPPER(column) LIKE ?,效果是一样的。
  • 安全提醒:绝对不要直接把变量拼接到SQL字符串里(比如cursor.execute(f"SELECT ... LIKE '%{search_term}%'")),这种写法会引入SQL注入风险,参数化查询才是安全的标准做法。

内容的提问来源于stack exchange,提问作者Mr. Hax

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 03:40:15