首页 > 解决方案 > mysql 查询过滤器 LIKE 无法正常工作

问题描述

我有一列campaign_name,用户可能会键入并查找增加敏感字符串关键字。例如,他们输入了"adopt a patient". 但在我的桌子里面campaign_name:我有"adopt-a-patient"

+----------------
|campaign_name  |
+----------------
|adopt-a-patient|
-----------------
select * from campaign where campaign_name LIKE '%adopt a patient%';
return ZERO result

我的campaign_name排序规则已经设置为utf8_general_ci. 但是,如果用户准确输入了单词"adopt-a-patient",结果将按预期返回。

任何帮助将非常感激。无论如何,我正在django应用程序上实现它。我只是在里面调试它HeidiSQL

标签: pythonmysqlsqldjango

解决方案


也许用替换空格'%'会做你想要的:

where campaign_name like concat('%', replace('ADOPT A PATIENT', ' ', '%'), '%')

注意:这允许任何长度的字符串。如果您只想允许一个字符,请'_'改用:

where campaign_name like concat('%', replace('ADOPT A PATIENT', ' ', '_'), '%')

推荐阅读