【问题标题】:How can I return records with a MySQL query using a regular expression?如何使用正则表达式返回带有 MySQL 查询的记录?
【发布时间】:2010-10-23 20:01:04
【问题描述】:

我的数据库中有记录通过用户输入进行搜索,最初,这足以找到正确的记录。

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

这一切都很好,但随后事情开始发生,例如,搜索“红色”会在其Flower 字段中按顺序找到带有字符“红色”的植物,而不仅仅是整个单词“红色” .

有人建议我在用户输入的两侧简单地放置一个空格,但我知道如果单词是字段中的第一个单词或最后一个单词,这将失败。我心想,我应该使用正则表达式!搜索两边有单词边界的单词。

不幸的是,我以前从未在数据库中使用过正则表达式。您如何构建查询以使用正则表达式搜索数据库?希望就这么简单:

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

【问题讨论】:

    标签: php mysql regex


    【解决方案1】:

    是的,就是这么简单。

    MySQL Reference Manual - Regular Expressions

    MySQL 正则表达式中的单词边界序列是[[:<:]][[:>:]],所以你最终会得到类似的结果:

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

    【讨论】:

    • 真的吗?总的来说,我是 mysql 文档的忠实粉丝。搜索功能不是很好,但大多数页面通常写得很好,一旦我找到了合适的。
    • 是的,我可能有点奇怪......另一方面,PHP 或 jQuery 文档......爱他们
    猜你喜欢
    • 2023-03-12
    • 1970-01-01
    • 2018-08-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-06
    相关资源
    最近更新 更多