千家信息网

mysql 数据库中的三种判断是否包含总结

发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,应用场景:1:在使用mysql数据库进行存储数据的时候,有时候,一个字段,要存储使用逗号分隔的多个数据,在查询的时候,传递的是一个keyword,需要在逗号分隔的字段中进行查询,这种情况怎么处理?比如
千家信息网最后更新 2026年11月01日mysql 数据库中的三种判断是否包含总结

应用场景:
1:在使用mysql数据库进行存储数据的时候,有时候,一个字段,要存储使用逗号分隔的多个数据,在查询的时候,传递的是一个keyword,需要在逗号分隔的字段中进行查询,这种情况怎么处理?
比如:
在爬虫爬取的时候,指定关键字查询,关键字可以是多个用逗号分隔。数据库中对应的字段是:key_word,存储的数据,比如:凯哥Java,kaigejava这样的。那么现在我要查询的关键字是:凯哥java这样的。怎么查询呢?
2:第二种情况,我们在更新的是,先判断如果指定字段,是否包含指定字符串。如果不包含,在原有字段上添加指定的字段。
比如:
在爬取网站的时候,没有添加http://www. 这个。判断,如果没有添加的,都更新添加http://www. 。这样的如何更新呢?
前期准备:
创建数据库:

CREATE TABLE config_sentiment (
config_sentiment_id varchar(64) NOT NULL COMMENT '舆情配置表-主键id',
config_sentiment_web_name varchar(60) NOT NULL COMMENT '抓取网站名称',
config_sentiment_web_url varchar(500) NOT NULL COMMENT '抓取网站网址',
config_sentiment_item_name varchar(64) NOT NULL COMMENT '项目id',
config_sentiment_rate varchar(5) NOT NULL DEFAULT '1' COMMENT '抓取频率 默认1(1小时)',
config_sentiment_keyword varchar(500) NOT NULL COMMENT '抓取关键字。多个用,分隔',
config_sentiment_newtime varchar(20) DEFAULT NULL COMMENT '最新抓取时间',
config_sentiment_number int(20) DEFAULT NULL COMMENT '最新抓取条数',
config_sentiment_adduser varchar(64) NOT NULL COMMENT '创建人',
config_sentiment_addtime varchar(20) NOT NULL COMMENT '创建时间',
config_sentiment_updateuser varchar(64) DEFAULT NULL COMMENT '更新人',
config_sentiment_updatetime varchar(20) DEFAULT NULL COMMENT '更新时间',
PRIMARY KEY (config_sentiment_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
插入数据:
insert into config_sentiment(config_sentiment_id,config_sentiment_web_name,config_sentiment_web_url,config_sentiment_item_name,config_sentiment_rate,config_sentiment_keyword,config_sentiment_newtime,config_sentiment_number,config_sentiment_adduser,config_sentiment_addtime,config_sentiment_updateuser,config_sentiment_updatetime) values ('1','凯哥Java','kaigejava.com','0','1','投资,理财','2018030909572100',10,'88888888','2018030909570021','88888888','2018030909570021'),('2','凯哥Java','kaigejava.com','0','1','百度,天猫','20',10,'88888888','20','88888888','20'),('3','36','kaigejava.com','0','1','理财产品,百度理财,百度理财产品','2018030909570021',10,'88888888','2018030909570021','88888888','2018030909570021');

查看数据:

我们可以看到,url中都没有添加http://。keyword中有多个产品。
争对场景一,解决方案有两个:
1:使用最常用的,模糊查询。sql语句:

like之后,我们发现有两条数据。虽然模糊查询的模糊可前,可后。但是这样的模糊,查询出数据太多了。很多都不是我想要的。
我就想要【理财】这个keyword的数据。这样多数据中精确查询怎么解决?请看下:
解决方案二:
利用MySQL 字符串函数 find_in_set();
具体sql语句:
SELECT t.config_sentiment_web_url url,t.config_sentiment_keyword keyword FROM config_sentiment t WHERE FIND_IN_SET('理财', t.config_sentiment_keyword);
查询后结果:

这样就解决问题了。
争对问题2:更新语句:
UPDATE config_sentiment SET config_sentiment_web_url =CONCAT('http://www.',config_sentiment_web_url) WHERE LOCATE('http://',config_sentiment_web_url)=0;
执行结果:

再次查询看看http://www.是否添加到数据库了。

已经添加上了。问题已经解决。
需要注意的是:在mysql中字符串连接不是使用【+】而是使用【concat函数】
凯哥java(微信id:kaigejava)
本文凯哥个人网站:http://kaigejava.com/article/detail/122

数据 查询 字段 更新 数据库 关键 关键字 多个 时候 网站 产品 字符 字符串 时间 语句 逗号 问题 存储 函数 场景 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 耶加雪菲 为想互联网科技怎么样 互联网与科技发展 互联网 科技公司 北京禾田雨橡互联网科技 科技类的互联网平台 哈尔滨秒房互联网科技有限公司 山东吉时兔互联网科技有限公司 海南科技产业互联网平台 银川新华互联网科技学校地址 哈尔滨屹滨互联网科技有限公司 民营互联网公司国防科技 科技大学互联网 互联网方面的科技前沿 电子商务与互联网科技的关系 黑云互联网科技有限公司 互联网科技股为什么大涨 世界互联网科技成果奖 互联网时代科技型公司的机会 互联网科技企业商标注意事项 广东猪兼强互联网科技有限公司 为想互联网科技 重庆互联网医院沙龙医盟信息科技 宝灵互联网科技有限公司 成都互联网科技公司工作好不好 广州新华互联网科技学校电竞方面 互联网在线教育科技创业 同城互联网络科技 互联网科技和医药行业 重庆科技产业互联网有哪些
0