MySQL like子句允许通配符搜索,例如'%keyword%'
,其中关键字夹在列值中。
对于模式匹配,其中关键字包含列值的一部分,而%keyword%
不起作用时,我们可以使用INSTR
函数进行搜索。
示例:
Column="Apple"
$keyword = "An Apple a day"
在此,我们无法Column like '%$keyword%'
进行匹配,但(INSTR('$Keyword', Column)>0
会进行匹配。
有什么替代方案(正则表达式?,全文搜索?,lucene?)除了INSTR之外还有其他模式匹配这样的情况(例子?)?
更新
Column = "Golden Apple"
$keyword = "An Apple a day"
即使是这样的样本,我也希望能够将$ keyword与列匹配,因为它们有一个共同的术语“Apple”。
答案 0 :(得分:1)
我不清楚您想要做什么,但请尝试使用此链接查找有关pattern matching in mysql的帮助
您是在编写程序,触发器还是只是选择?
答案 1 :(得分:1)
在这种情况下,您仍然可以使用LIKE
:
'%$keyword%' LIKE CONCAT('%', Column, '%')
或正则表达式:
'%$keyword%' REGEXP Column
答案 2 :(得分:0)
还要考虑SOUNDEX和Natural Language(使用全文搜索和相关性)搜索。