前言
手头有fix的任务,需要在mysql中,根据某个url截取部分字符串作为openId,url格式为xxxx.com/202012/t20201216_15360838.html
,截取其中的t20201216_15360838
出来作为openId,截取202012
作为yyyy-mm的日期格式。
解决方案
1.mysql截取 /
和 .
中间的字符作为openId
- SUBSTRING_INDEX(u.url,’/’,-1) 为根据
/
进行截取,获取后面的字符串 - SUBSTRING_INDEX(u.url,’.’,1) 为根据
.
进行截取,获取前面的字符串
这样一来,用法就很明了了 ,开始实践把。
update unit u set u.open_id = SUBSTRING_INDEX(SUBSTRING_INDEX(u.url,'/',-1),'.',1)
where length(u.open_id)<1;
2.例如拿year&month
xxxx.com/202012/t20201216_15360838.html
- 先拿
倒数
第二个/
以后的内容SUBSTRING_INDEX(u.url,'/',-2)
- 再拿
正数
第一个/
前面的内容SUBSTRING_INDEX(x,'/',1)
#check before do
select SUBSTRING_INDEX(SUBSTRING_INDEX(u.url,'/',-2),'/',1) from unit u;
#update
update unit u set u.yearMonth= SUBSTRING_INDEX(SUBSTRING_INDEX(u.url,'/',-2),'.',1)
where yearMonth is null;