如何使用SUBSTRING_INDEX的所有索引进行选择

时间:2017-07-25 14:12:06

标签: mysql sql

我有一张这样的表

表foo1

+----+------------------------------+
| Id | Content                      |
+----+------------------------------+
| 1  | Hello World                  |
+----+------------------------------+
| 2  | Hello Users                  |
+----+------------------------------+
| 3  | This post submitted by users |
+----+------------------------------+
| 4  | C# Programming               |
+----+------------------------------+

我将参数发送到存储过程,如'Hello,users,post'。我想用逗号(,)拆分参数,并获取包含此索引的所有行(Hello或users或post)。如果我发送'Hello,用户'返回表应该是这样的(包含hello或者用户)

+----+------------------------------+
| 1  | Hello World                  |
+----+------------------------------+
| 2  | Hello Users                  |
+----+------------------------------+
| 3  | This post submitted by users |
+----+------------------------------+

我试过这个查询

SELECT
    *
FROM foo1
WHERE foo1.Content 
LIKE CONCAT('%',SUBSTRING_INDEX('Hello, Users, Post', ',', 1),'%');

但它返回的行只包含'Hello'。参数的单词很灵活。它可以包含无数的单词。它可以是'Hello,post,users'或'Hello'或'Hello,post'。我该如何解决这个问题?

感谢。

1 个答案:

答案 0 :(得分:4)

使用REGEXP功能。

SELECT * 
FROm foo1 
WHERE foo1.Content REGEXP 'Hello|Users|Post';