ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

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

2021-01-10 07:54:29  阅读:343  来源: 互联网

标签:COMMENT web varchar sentiment 数据库 三种 mysql NULL config


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

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

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


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');

查看数据:

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

我们可以看到,url中都没有添加http://。keyword中有多个产品。

争对场景一,解决方案有两个:

1:使用最常用的,模糊查询。sql语句:

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

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);
查询后结果:

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

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

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

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

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

已经添加上了。问题已经解决。

需要注意的是:在mysql中字符串连接不是使用【+】而是使用【concat函数】

标签:COMMENT,web,varchar,sentiment,数据库,三种,mysql,NULL,config
来源: https://blog.51cto.com/15076218/2586461

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有