如何根据值的一部分选择行?

时间:2016-06-15 11:53:51

标签: mysql sql

我有这张桌子:

// qanda
+----+---------+-----------------------+------------------------+
| id |  title  |        content        |          tags          |
+----+---------+-----------------------+------------------------+
| 1  | title1  | content1              | <a>tagA<a/><a>tagB</a> |
| 2  | title2  | content2              | <a>tagA</a><a>tagC</a> |
| 3  | title3  | content3              | <a>tagM</a><a>tagB</a> |
| 4  | title4  | content4              | <a>tagD</a>            |
| 5  | title5  | content5              | <a>tagA</a><a>tagG</a> |
+----+---------+-----------------------+------------------------+

我想选择tagB的每一行。所以这是预期的结果:

+----+---------+-----------------------+------------------------+
| 1  | title1  | content1              | <a>tagA<a/><a>tagB</a> |
| 3  | title3  | content3              | <a>tagM</a><a>tagB</a> |
+----+---------+-----------------------+------------------------+

我该怎么做?

目前我在tags列上创建了一个 FULLTEXT 索引,发现如下:

. . . WHERE MATCH ( tags ) AGAINST ( :tag )

但我的方法有两个问题:

  1. 有时tags列包含类似此值的内容:<a class="tagA">tagB</a>。在这种情况下,我只想为tagB选择该行,但会为tagAtagB选择该行。

  2. 我无法选择多个标签。例如:我无法选择包含tagAtagBtagC的行。

1 个答案:

答案 0 :(得分:-1)

您可以在查询中使用reglar表达式:

Regular expression

在MySQL中,你可以使用如下提到的部分: MYSQL regular expression