2009-05-05 30 views
4

我在我的数据库中有使用用户输入搜索的记录,最初这足以找到正确的记录。如何使用正则表达式以MySQL查询返回记录?

"SELECT id FROM plants WHERE Flower LIKE '%" . $sanitizedUserInput . "%'" 

这是工作的一切都很好,但后来的事情开始发生一样,在他们Flower场顺序搜索与人物“红”“红”是越来越植物,而不是简单地将整个单词“红'。

我被建议简单地在用户输入的任意一边放一个空格,但是我知道这个单词是字段中的第一个单词,或者是最后一个单词。我想,我应该用正则表达式!搜索单词边界的任何一边。

不幸的是,我从来没有在数据库中使用过正则表达式。你如何构建一个查询来搜索正则表达式的数据库?希望它如此简单:

"SELECT id FROM plants WHERE Flower REGEX `/\b" . $sanitizedUserInput . " \b/`" 

回答

7

是的,这非常简单。在MySQL正则表达式

MySQL Reference Manual - Regular Expressions

的字边界序列[[:<:]][[:>:]]所以你会喜欢的东西来结束:

$query = "SELECT id ". 
      "FROM plants ". 
      "WHERE Flower REGEXP '[[:<:]]".$sanitizedUserInput."[[:>:]]'"; 
+1

出于某种原因,我觉得MySQL的文档混乱.. – alex 2009-05-05 05:33:05