SQL表字段中出现模式的表

时间:2014-08-10 22:32:46

标签: mysql sql string-search

我有这张桌子

文本

| txt_id | txt_content                                  |
|--------+----------------------------------------------|
|      1 | A ton of text and <<this>>                   |
|      2 | More text <<and>> that                       |
|      3 | <<Very>> much <<text>> enough for<everyone>> |

这个表

标记

| tag_id | tag_name |
|--------+----------|
|      1 | THIS     |
|      2 | AND      |
|      3 | VERY     |
|      4 | TEXT     |
|      5 | EVERYONE |

我需要一个查询才能生成此表。

| txt_id | tag_id |
|--------+--------|
|      1 |      1 |
|      2 |      2 |
|      3 |      3 |
|      3 |      4 |
|      3 |      5 |

通过单独获取每段文本但使用 text 表有很多行(> 30M)来处理python代码会很愚蠢,我认为它会花费很多时间在数据库上 - 后端沟通。有没有办法用MySQL做这种事情?

我甚至满意
| txt_id | tag_id   |
|--------+----------|
|      1 | this     |
|      2 | and      |
|      3 | Very     |
|      3 | text     |
|      3 | everyone |

但我希望最后一部分在MySQL中很容易做到。

1 个答案:

答案 0 :(得分:2)

这不是必须特别,但它会做你想要的:

select t.txt_id, ta.tag_id
from text t join
     tags ta
     on t.txt_content like concat('%<', ta.tag_name, '>%');