我想在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 | |
+---------+---------------------------+-----------------+
答案 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;
使用此查询可以轻松更改您正在查找的单词。您甚至可以为它们使用单独的表,因此您的查询不必在运行中创建一个,因此根本不需要进行修改。