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

Python SQLite中LIKE查询仅匹配姓氏无返回结果问题

问题原因

LIKE子句在没有搭配通配符使用时,查询效果和等值判断=完全一致。
你传入参数"Yang"时,实际执行的逻辑是查找Player1字段值完全等于Yang的行,但数据库中存储的姓名格式为姓氏 名缩写.(比如Yang Y.),没有完全匹配Yang的记录,因此返回空结果。
当你传入完整姓名"Yang Y."时,参数值和存储的字段值完全相等,因此可以正常返回匹配结果。

修正方案

SQL中%是LIKE语法的通用通配符,可以匹配任意长度的任意字符。你只需要在传入的查询姓氏后拼接%,即可匹配所有以该姓氏开头的姓名记录。

注意:通配符在参数层拼接即可,不要直接拼接到SQL语句字符串中,避免SQL注入风险。

修正后的代码如下:

for game in final_table:
    name = "Yang"
    # 拼接后缀通配符,匹配所有以输入姓氏开头的姓名
    search_param = f"{name}%"
    cur1.execute("SELECT * FROM matches WHERE Player1 like ?", [search_param])
    match = cur1.fetchall()

print(match)

如果需要同时在Player1、Player2两列中匹配对应姓氏的选手,可以扩展查询条件:

for game in final_table:
    name = "Yang"
    search_param = f"{name}%"
    # 同时匹配两列的姓氏
    cur1.execute("SELECT * FROM matches WHERE Player1 like ? OR Player2 like ?", [search_param, search_param])
    match = cur1.fetchall()

print(match)

内容的提问来源于stack exchange,提问作者Voley Betz

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 05:21:23