mysql - 将 mySQL 与字符串中的任何单词匹配

标签 mysql sql string match sql-like

SELECT * FROM Restaurants WHERE Name LIKE '%{$_GET["searchval"]}%'

上面的代码将返回餐厅表中名称字段包含 searchval 的所有条目。

例如,如果搜索值为“示例条目”并且数据库中有一个名为“示例条目编号五”的条目,则将显示该条目。但是,如果条目是“示例五”,则不会显示。

如何才能使数据库条目包含字符串中的任何一个单词,它将显示出来。这样,如果条目中有“Example”或“Entry”,则会显示“Example Entry”。

最佳答案

最好的解决方案是全文索引。但是,您可以使用正则表达式执行您想要的操作。

假设单词仅由一个单词分隔,您可以这样做:

where name rlike replace({$_GET["searchval"]}, ' ', '|')

如果你确实想采用正则表达式的方法,我建议你在应用层进行值解析。但是,这确实可以在数据库中实现您想要的功能,假设单词由空格分隔并且不使用特殊的正则表达式字符。

关于mysql - 将 mySQL 与字符串中的任何单词匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33714564/

相关文章:

c# - 如何在C# windows窗体中创建与在线mysql数据库的连接?

php - ORDER BY % 这是在原始 while 循环中计算的

mysql - 如何使用 sql 选择值作为数组?

SQL - 组合多个类似的查询

java - 替换字符串中的一个字符

c# - 我正在为字符串实现 CaseAccentInsensitiveEqualityComparer。我不确定如何实现 GetHashCode

php - 优化查询(2个坐标之间的距离)

mysql - 表名可以作为别名吗?

java - 如何将List保存到SQL数据库中?

c - C 中的嵌套循环 strtok_r 通过用 ';' 和 ' ' 分隔出现问题