我有一张这样的表
表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'。我该如何解决这个问题?
感谢。
答案 0 :(得分:4)
使用REGEXP
功能。
SELECT *
FROm foo1
WHERE foo1.Content REGEXP 'Hello|Users|Post';