2017-12-18 164 views
-1

我想在mytext字段中搜索一些keywods,并使用相同的查询获得匹配的关键字。有什么方法可以查询吗?如何使用Mysql搜索关键字并获得匹配的单词?

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

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

这里是一个查询结果的例子;

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

你是什么意思与'获取匹配的关键字与这个相同的查询'? – ino

回答

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; 

与此查询可以很容易地改变你正在寻找了话。你甚至可以为它们使用一个单独的表格,这样你的查询就不需要在运行中创建一个,因此不必修改。

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

试试这个

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 ;