如何在mysql列中搜索文本,还包括标点符号

时间:2015-11-12 01:36:06

标签: mysql regex

我的sql搜索使用正则表达式:

$sql = " select * from table where regexp CONCAT('[[:<:]]', :searchTerm, '[[:>:]]') ";

:searchTerm是一个绑定搜索变量。

目前,如果执行我对“井”这个词的搜索,会出现一堆结果。但是,如果我用逗号搜索“Well”,则查询结果为空。

我假设发生这种情况是因为'[[:&lt ;:]]'和'[[:&gt;:]]'是单词边界标记,因此,忽略所有标点符号。

有谁知道如何构建查询以包含标点符号?

1 个答案:

答案 0 :(得分:0)

您可以使用内置标点字符类[:punct:]来匹配标点字符,后跟?,它将匹配前面的零个或一个字符或字符类 - 在这种情况下它将是你定义的角色类。

例如:

$sql = "select * from table where regexp CONCAT('[[:<:]]', :searchTerm, '[[:punct:]]?[[:>:]]') ";

这是公平的警告,我对MySql没有多少经验,我没有发表上面的例子。这应该有效,或者至少指向正确的方向。您可以找到有关mysql文档的Regular Expression Operators部分的更多信息。

此外,我不确定内置标点字符类中包含哪些字符,但您可以使用方括号定义自己的字符,只需包含所需的标点字符。例如[,.!?;:]