MySQL字符串包含字符串

MySQL字符串包含字符串,mysql,sql,Mysql,Sql,我正在使用MySQL Workbench,目前正在寻找一个函数或其他东西来帮助我检查一个字符串是否在另一个字符串中。 例如: text1='hello,name,world' 如果我有一个字符串或varchar,它是这样的 “我的名字是” 它应该说它包含,因为它上面有“name”。 基本上,我想做的是,我有一个Comments表,在插入注释之前创建一个触发器,检查comment\u文本是否包含任何脏话。这些咒骂的话是这样保存的 从保留字中选择group_concat(word)to texto

我正在使用MySQL Workbench,目前正在寻找一个函数或其他东西来帮助我检查一个字符串是否在另一个字符串中。 例如:

text1='hello,name,world'

如果我有一个字符串或
varchar
,它是这样的

“我的名字是”

它应该说它包含,因为它上面有“name”。 基本上,我想做的是,我有一个Comments表,在插入注释之前创建一个触发器,检查
comment\u文本
是否包含任何脏话。这些咒骂的话是这样保存的

从保留字中选择group_concat(word)to texto

所以它的所有单词都很接近:swear1,swear2,swear3,等等

我想它更新一个特定的表,如果评论真的包含一个脏话。 我尝试过使用
比如SUBSTR()、CONTAINS()、REGEXP
,但没有成功

有人能帮忙吗?

我建议:

where comment regexp replace(swearwords, ',', '|')

您可能希望也可能不希望在正则表达式模式中包含单词分隔符。

LIKE
就是您想要的。您需要使用
%
将其包装起来,以匹配字符串中的任何位置

WHERE string LIKE '%name%'
如果
字符串
列的值包含字符串
名称
,则为true

如果在表的列中有脏话,则可以将其合并:

SELECT DISTINCT comment
FROM comments AS c
JOIN swear_words AS s ON c.comment LIKE CONCAT('%', s.word, '%')

不要将脏话放在逗号分隔的列表中,这使得在MySQL中单独使用脏话非常困难。

保留词
表中构建正则表达式模式:

select CONCAT('(',group_concat(word SEPARATOR '|'),')') from reserved_words
然后运行
REGEXP
检查
comment
字段

演示运行

create table reserved_words(word varchar(10));
insert into reserved_words values('hello'),('name'),('world');

select 'My name is' REGEXP (select CONCAT('(',group_concat(word SEPARATOR '|'),')') from reserved_words) swear
UNION ALL
select 'My title is' REGEXP (select CONCAT('(',group_concat(word SEPARATOR '|'),')') from reserved_words) swear
UNION ALL
select 'hello world' REGEXP (select CONCAT('(',group_concat(word SEPARATOR '|'),')') from reserved_words) swear;
结果

swear
1
0
1

你能在这里列出一些带有数据的示例查询,让我们知道你尝试了什么吗?你能达到预期的结果吗?请看。