php - PHP MySQL LIKE 查询和标点符号
问题描述
我正在数据库中搜索学校名称。这里附近的一所学校名为 EO Green。我遇到的问题是,如果有人键入“EO Green”,他们自然会将学校列入结果列表。但是,如果有人键入“EO Green”,则不会显示,但应该显示。
这是查询:
SELECT DISTINCT name
FROM donations
WHERE name LIKE '%$query%'
ORDER BY CASE WHEN name LIKE '$query%' THEN 1
WHEN name LIKE '%$query' THEN 3
ELSE 2 END
LIMIT 8
有没有我只是忽略的解决方案?
这不是关于在 PHP 中去除标点符号的问题,而是关于在 MySQL 查询中忽略数据库中的标点符号的问题。
[编辑] 解决方案显然是对 MySQL Query 进行替换
WHERE REPLACE($field, '.', '') LIKE '%$query%'
然后还从用户输入中删除标点符号
$query = str_replace(".", "", $query);
它完成了我所追求的,但我仍然很好奇是否有更简单的方法。尽管我现在将其称为已解决,因为这可以完成工作。
解决方案
根据您使用的 MySQL 版本,您的问题的解决方案可能是使用全文搜索。
有一个自然语言解析器可以满足包含定界符(例如逗号、空格和句点)的搜索。确保检查您的 MySQL 版本,因为某些旧版本不支持 InnoDB 的全文搜索。
推荐阅读
- nuxt.js - 使用 IISNode 在 IIS 中部署 NUXT JS 应用程序
- amazon-web-services - 需要了解 AWS 数据库是有多个数据库还是单个?
- python - 如何在将图像保存到文件夹之前调整图像大小,使其在使用烧瓶的引导 4 卡中具有固定高度?
- javascript - 如果语句不起作用 + javascript 覆盖值(表单)
- javascript - 如何自定义反应表 7 中的列
- python-3.x - 从模块类存储和读取数据
- python - 滚动日历并选择日期
- unity3d - 在球体中移动角色
- javascript - 在 Firefox 中打印 iframe 时如何打开打印预览对话框?
- jquery - 使用jquery选择嵌套div的最后一个元素以外的每个项目