首页 > 解决方案 > 使用 LIKE 和通配符进行 SQL/Python3/6 更新

问题描述

如何在“incident_id”列类似于“inc”的情况下更新 mytable 的“num”值

我尝试更改为 LIKE '%%%S%%' 但出现错误,正确的方法是什么?

num = "I-102930"
inc = "hdtff-dd24r-sdft4-sfgg"       

 cur = conn.cursor()
 num = str(inc_num)
 inc = inc_id
 sql = """ UPDATE mytable SET incident_num =%s WHERE incident_id LIKE %s """
 val = (num, inc)
 cur.execute(sql, val)

标签: mysqlpython-3.x

解决方案


正确的方法是使用?占位符来传递您传递的参数并在查询中连接'%'通配符:

sql = "UPDATE mytable SET incident_num = ? WHERE incident_id LIKE CONCAT('%', ?, '%')"
val = (num, inc)
cur.execute(sql, val)

CONCAT()是MySql连接字符串的方式。
一种更通用的与数据库无关的方法是将通配符连接到变量inc

sql = "UPDATE mytable SET incident_num = ? WHERE incident_id LIKE ?"
val = (num, "%" + inc + "%")
cur.execute(sql, val)

推荐阅读