繁体   English   中英

MySql 查询 Python LIKE 带通配符

[英]MySql Query in Python LIKE with Wildcard

我已经看到了这个问题,但通常给出的答案对我不起作用。 我正在尝试做一个简单的查询

query_pre_company = "SELECT `name` FROM `seta`.`companies` WHERE `companies`.`name` LIKE SOUNDEX(%s) OR(`companies`.`name` LIKE %s)"
name = sheet.cell(2,2).value #from an excel sheet
name_check='%'+name+'%'
rows_count=cursor.execute(query_pre_company,[name_check])

结果是错误

  ```query = query % tuple([db.literal(item) for item in args])
  TypeError: not all arguments converted during string formatting```

我也试过

rows_count=cursor.execute(query_pre_company,(name_check,))

以及一百万种其他不同的变体,包括直接在查询中粘贴“%%s%”等

请帮忙谢谢

由于您有两个占位符,因此您需要传递两个参数。 SOUNDEX()的参数应该是没有添加通配符的名称。

您也没有正确使用SOUNDEX() 它不返回lIKE模式,它返回一个代码字符串。 您还需要在列上调用它并比较它们。

query_pre_company = """SELECT `name` 
                    FROM `seta`.`companies` 
                    WHERE SOUNDEX(`companies`.`name`) = SOUNDEX(%s) 
                    OR `companies`.`name` LIKE %s"""
name = sheet.cell(2,2).value #from an excel sheet
name_check='%'+name+'%'
rows_count=cursor.execute(query_pre_company,[name, name_check])

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM