如何使用Mysql搜索关键字并获得匹配的单词?

时间:2017-12-18 11:06:23

标签: mysql sql

我想在mytext字段中搜索一些keywod,并使用相同的查询获取匹配的关键字。有什么方法可以查询吗?

我可以通过不同的方式搜索关键字,但我无法获得匹配的结果。

SELECT * FROM table WHERE mytext REGEXP 'keyword1|keyword2|keyword3';

以下是一个示例查询结果;

 +---------+---------------------------+-----------------+
 |      id | mytext                    |matchingWords    |
 +---------+---------------------------+-----------------+
 |     101 | keyword1aabbkeyword2      |keyword1,keyword2|
 |     102 | keyword2adfsadfadsfa      |keyword2         |
 |     103 | adfdsfa                   |                 |
 |     104 | assfb                     |                 |
 +---------+---------------------------+-----------------+

3 个答案:

答案 0 :(得分:1)

您可以尝试这样的事情:

SELECT
  IF (mytext REGEXP 'keyword1', 1, 0) matchingKeyword1,
  IF (mytext REGEXP 'keyword2', 1, 0) matchingKeyword2,
  IF (mytext REGEXP 'keyword3', 1, 0) matchingKeyword3
FROM table WHERE mytext REGEXP 'keyword1|keyword2|keyword3'
;

答案 1 :(得分:1)

试试这个

 select ID, mytext, concat_ws(   IF (mytext REGEXP
 'keyword1','keyword1' , '') ,   IF (mytext REGEXP 'keyword2',
 'keyword2', '') ) FROM table WHERE mytext REGEXP
 'keyword1|keyword2|keyword3' FROM table ;

答案 2 :(得分:1)

您想要匹配关键字的串联。我将GROUP_CONCAT用于此:

select 
  id, 
  mytext,
  (
    select group_concat(word)
    from
    (
      select 'keyword1' as word
      union all 
      select 'keyword2' as word
      union all 
      select 'keyword3' as word
    ) w
    where t.mytext like concat('%', w.word, '%')
  ) as matching_words
from mytable t;

使用此查询可以轻松更改您正在查找的单词。您甚至可以为它们使用单​​独的表,因此您的查询不必在运行中创建一个,因此根本不需要进行修改。