mysql - 使用 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)
解决方案
正确的方法是使用?
占位符来传递您传递的参数并在查询中连接'%'
通配符:
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)
推荐阅读
- python - 试图将我的收入报告写入 .txt 文件
- amazon-web-services - 如何使用 go sdk 在 aws EC2 中自动执行脚本?
- windows-subsystem-for-linux - 如何在 WSL 和 Windows10 中组织编程语言和库
- python - 在列中平均分配重复的时间戳
- excel - Excel 是否会将打开具有指定 URL 的新浏览器实例的宏标记为恶意?
- c# - 在编译时推断泛型是否为数组类型
- javascript - 如何找到父div的类
- java - 根据类型获取正确的对象
- php - cPanel 上显示的可疑链接 --> 访问者
- java - 如何使用 JavaCord discord api 从用户那里获取输入