2016-05-14 110 views
0

如果我有一个表files,它有一个列title,有的标题的都是这种格式:搜寻有特殊字符

google: and facebook 
stack: overflow 

现在,我想在添加搜索功能,我应用程序,它执行LIKE '%word%'查询。但是,如果人们搜索google and facebook它不会找到任何东西,除非他们专门搜索google: and facebook。 我知道LIKE做,为什么它不给我找的结果,我只是询问是否有办法在MySQL表进行搜索,而忽略特殊字符像: ' - . , "

感谢。

+0

比较前使用REPLACE函数。 ... REPLACE(fieldname,':','')LIKE%word% – smozgur

+0

你应该更清楚地发布你的问题,用户不知道你的数据究竟是什么样的,即使你忽略了特殊的字符,他们可能会再输入一个空格像'谷歌和脸谱'或没有'和'像'谷歌脸谱'。所以即使'replace'或'REGEXP'也能给出你现在想要的,但你也永远不知道用户会输入什么来搜索。 – Blank

+0

我知道,我只是特意询问特殊字符,因为我多次面对这个问题。 – Yakirbu

回答

1

比较前使用REPLACE功能。

... REPLACE(fieldname, ':', '') LIKE %word% 
+0

谢谢。如您所说,这不适合大型数据集,但在我的情况下就足够了。 – Yakirbu

0

您可以使用正则表达式工作

MYSQL Manual

+0

为什么他需要5.7或更高版本?MySQL已经有很长一段时间的正则表达式 – Barmar

+0

如果你展示了一个例子,他可以将他的'L​​IKE'改为合适的正则表达式,那么这会更好一些 – Barmar

+0

然后他正在使用我为他制作的表达,明天他需要另一个表达,因为他发现了更多的问题,并再次提出要求:)我认为我们的工作不是让我们在银盘上给出答案,而是向他展示他可以解决问题的工具。 –

0

另一种方法是,以取代所有空格用“%”搜索字符串或者爆炸的搜索字符串(空间分隔符号),并且不同部位与连接一个OR语句。