一种实现方法是转换
apple, oranges,pears为
apple|oranges|pears并使用
RLIKE(即正则表达式)与之匹配。
例如,“约翰喜欢吃苹果”与正则表达式“苹果|橙色|豌豆”匹配。
首先,要将“苹果,橘子,梨”转换为正则表达式,请将所有“,”替换为“ |” 使用
REPLACe。然后使用
RLIKE来选择匹配的关键字条目:
SELECT * FROM keywords_tableWHERe 'John liked to eat apples' RLIKE REPLACE(keywords,', ','|');
但是,这确实取决于您的逗号分隔是否一致(即,如果有一行看起来像
apples,oranges这样,因为
REPLACE替换逗号后接一个空格(根据您的示例行),这行将不起作用。
我也不认为它会很好地扩展。
而且,如果您有一个类似“约翰喜欢吃菠萝”的句子,它将与上面的两行都匹配(因为它的确包含“苹果”)。然后,您可以尝试在正则表达式中添加单词边界(即
WHERe$sentence RLIKE '[[:<:]](apple|oranges|pears)[[:>:]]'),但是当您使用复数形式时(“
apples”将不与“ [wordboundary] apple [wordboundary]”匹配),这将使匹配变得更糟。



