【问题标题】:Search specific word in mysql在mysql中搜索特定单词
【发布时间】:2015-05-22 10:27:03
【问题描述】:

我在mysql Db中有如下字符串

"Good Mayer Brown Corporate & Securities"
"Three Mayer Brown Good & Securities"
"Three Mayer Brown Corporate & Good"
"Three Mayer Brown Goodies & Securities"

我需要找到与LIKE %% 关键字不同的确切单词。这是一个例子,

我需要选择带有"Good" 关键字的行。这将选择前 3 行。最后一个有像"ies"这样的额外词这是我的预期结果

    "Good Mayer Brown Corporate & Securities"
    "Three Mayer Brown Good & Securities"
    "Three Mayer Brown Corporate & Good" 

我已经尝试过以下查询。

SELECT * FROM table WHERE myword LIKE '% Good %'  OR myword LIKE 'Good%' OR myword LIKE '% Good'

但这对我不起作用。

【问题讨论】:

    标签: php mysql regex


    【解决方案1】:
    SELECT * FROM table WHERE myword REGEXP '^.*GOOD.*$
    

    您可以使用REGEXP 来执行此操作。或者

    SELECT * FROM table WHERE myword REGEXP '[[:<:]]GOOD[[:>:]]'
    

    word boundary一起使用。查看演示。 http://www.sqlfiddle.com/#!9/e1b9d/6/0

    【讨论】:

    • @CasimiretHippolyte 实际上是的。
    【解决方案2】:

    为什么不使用 Full Text Search,这意味着以一种具有大量功能的优化方式进行这种搜索,而不是像通配符那样很慢,甚至使用@的索引列987654322@ 对索引没有影响。如果您不知道如何操作,请参阅手册。这是一个示例供您使用

    mysql> create table test (search varchar(200),fulltext key(search)) engine=myisam;
    Query OK, 0 rows affected (0.08 sec)
    
    mysql> insert into test values ('Good Mayer Brown Corporate & Securities'),('Three Mayer Brown Good & Securities'),('Three Mayer Brown Corporate & Good'),('Three Mayer Brown Goodies & Securities');
    Query OK, 4 rows affected (0.02 sec)
    Records: 4  Duplicates: 0  Warnings: 0
    
    mysql> select * from test where match(search) against ('good' in boolean mode); 
    +-----------------------------------------+
    | search                                  |
    +-----------------------------------------+
    | Good Mayer Brown Corporate & Securities |
    | Three Mayer Brown Good & Securities     |
    | Three Mayer Brown Corporate & Good      |
    +-----------------------------------------+
    3 rows in set (0.00 sec)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-05-20
      • 2015-09-15
      • 1970-01-01
      • 1970-01-01
      • 2017-08-06
      • 2017-08-28
      相关资源
      最近更新 更多