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

时间:2015-11-14 23:25:02

标签: mysql sql string match sql-like

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

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

例如,如果searchval是“Example Entry”并且数据库有一个名为“Example Entry Number Five”的条目,则会显示该条目。但是,如果条目是“示例五”,则不会显示。

如何使数据库条目包含字符串中的任何一个单词,它将如何显示。如果条目中包含“示例”或“条目”,则显示“示例条目”。

1 个答案:

答案 0 :(得分:0)

最佳解决方案是全文索引。但是,您可以使用正则表达式执行所需操作。

假设单词只用一个单词分隔,你可以这样做:

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

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