【问题标题】:match a word from a sentence in MYSQL using regex使用正则表达式匹配MYSQL中句子中的单词
【发布时间】:2011-04-10 23:37:24
【问题描述】:

如何使用正则表达式从列中匹配句子中的单词?我试过了:

"select * from table where column regex '/\b".$text."\b/i'"

但这没有用。

【问题讨论】:

    标签: php mysql sql regex


    【解决方案1】:

    试试这个:

    "SELECT * FROM table WHERE column REGEXP '[[:<:]]" . $text . "[[:>:]]'"
    

    您应该确保任何可以在 $text 中被解释为特殊字符的字符都被正确转义。您还应该确保您没有得到 SQL 注入。

    【讨论】:

      【解决方案2】:

      MySQL 对这样的事情特别糟糕。我建议使用 MATCH AGAINST 语法 http://dev.mysql.com/doc/refman/5.1/en/fulltext-search.html 或使用 SOLR 之类的东西,如果您要批量执行此操作。

      【讨论】:

        【解决方案3】:

        我想你想要 LIKE 子句!

        SELECT * FROM table WHERE column LIKE '%value%'
        

        另外请阅读 UltimateBrent 的回答,因为全文搜索是一个非常好的点。

        【讨论】:

        • LIKE 无法检测单词边界。
        • 我知道这个..这就是为什么我也建议他检查你的答案。
        猜你喜欢
        • 2010-12-29
        • 2013-01-23
        • 1970-01-01
        • 2012-02-21
        • 1970-01-01
        • 2014-11-22
        • 1970-01-01
        相关资源
        最近更新 更多