千家信息网

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安全错误 数据库的锁怎样保障安全 互联网高科技 南京欣网互联网络科技 互联网科技园 上海睿民互联网科技有限公司 亿人帮互联网科技有限公司 互联网科技公司经营范围 港股互联网科技股 期待互联网科技 互联网科技公司怎么样 艾特科技互联网 互联网科技ppt模板 互联网科技大会案例 互联网公司会议桌创意科技软装饰 宁波青枫互联网科技有限公司 互联网为啥属于高科技 互联网保险科技创业 平安好医生打造互联网科技医疗 网互联网络科技 现代科技的标志之一的互联网 株洲百竞科技的互联网营销顾问 互联网科技有限公司 翻译 江苏南京365互联网科技 济南华为互联网科技产业总部基地 互联网科技寓意 青岛科技大学互联网大赛研究生 互联网科技的全部知识 玉溪新华互联网科技好不好 宁波跨境商互联网科技有限公司 科技互联网专业工作会议发言稿 互联网科技创新创业项目
0