问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

[05.21]MYSQL中正则表达式匹配这种格式的日期

发布网友 发布时间:2022-05-08 00:11

我来回答

4个回答

懂视网 时间:2022-05-08 04:33

字串

对于一般不涉及到集合的字串拆分合并运算,各数据库的SQL都有较丰富的支持,甚至包括正则表达式等复杂分析功能。当然,这些功能集算器也都有,作为动态语言,集算器还提供将字串作为表达式计算的功能。

在SQL中比较麻烦的字串处理主要和分组逆运算相关。字串由分隔符分成若干段,需要拆开形成多条记录或构成集合进一步运算,SQL没有显式集合,这类操作就很困难。

相对来讲,分组汇总时将字段值合并成一个串要容易一些,MySQL有group_concat函数完成这一功能,其它数据库一般也有形式略复杂的相关函数。

先看简单的拼串任务。设有学生表结构为:班级、姓名、性别;现要按班级分组后将男生和女生分别列成逗号分隔的串,串成员按姓名排序。

A

1

=db.query("select * from 学生表")

2

=A1.group(班级; ~.select(性别==’男’).(姓名).sort().string():男生,~.select(性别==’女’).(姓名).sort().string():女生)

集算器有集合数据,无需专门针对分组的拼串函数,可以随意组合出各种运算。

常规的拆串将伴随生成多记录,如上例的逆运算,要将结构为:班级、男生、女生的班级表再计算成结构为班级、姓名、性别的学生表:

A

1

=db.query("select * from 班级表")

2

=create(班级,姓名,性别)

3

>A1.run(A2.insert(0:男生.array(),A1.班级,~,”男”),A2.insert(0:女生.array(),A1.班级,~,”女”))

将串拆成集合后再据此生成记录就可以,不需要象SQL那样要用递归查询或与基准表JOIN的复杂方案。

有时拆串的目标是为了做集合运算。设有图书表结构为:书名、作者;其中作者是由逗号分隔的多人。现要找出同一组作者写过两本或以上书的数据,作者串中人名次序不确定。

A

1

=db.query("select * from 图书表")

2

=A1.group(作者.array().sort()).select(~.len()>1).conj()

拆串成集合后排序,就可以用来作为分组键值了,剩下都是常规动作了。

日期

与字串类似,数据库对常规的单值日期处理能力也没问题,但同样在碰到日期拆分或日期序列生成时就会比较麻烦。其实根本上的原因还是SQL的集合化不够彻底。

设有旅行记录表结构为:人员、开始日、结束日、…;现在要统计这批记录中哪5天正在旅行的人数最多。

这个问题需要将开始日和结束日之间的日期拆成单个的日期集合再分组统计即事。

A

1

=db.query("select 开始日,结束日 from 旅行表")

2

=A1.conj(periods(开始日,结束日)).groups(~:日期,count(1):人次)

3

=A2.sort(人次:-1).to(5)

集算器可以基于集合数据类型提供日期拆分方法,完成这个问题就很轻松。

日期序列生成的复杂度则主要由日期本身特点造成,在伴随逆分组运算时就更麻烦。

设有事件发生表T结构为:I(事件)、S(开始日期)、E(结束日期);现在要将两个日期之间的时段按月拆开多条,头月、尾月份分别以S、E为开始日和结束日,中间的月份是完整月。

A

1

=db.query("select I,S,E from T")

2

=A1.news(interval@m(a=S,b=E)+1;I, max(a,pdate@m(after@m(a,~-1))):S,min(b,pdate@me(after@m(a,~-1))):E)

pdate@m和@me可分别计算出每月的头尾日期。after@m将生成某日期几个月后的日期,这个函数会自动针对月末,在生成月区间时非常有用。

热心网友 时间:2022-05-08 01:41

update set aa bb=REPLACE(bb ,'abc', 'def');

热心网友 时间:2022-05-08 02:59

MySQL 一直以来都支持正则匹配,不过对于正则替换则一直到MySQL 8.0 才支持。对于这类场景,以前要么在MySQL端处理,要么把数据拿出来在应用端处理。

比如我想把表y1的列str1的出现第3个action的子 串替换成dble,怎么实现?


1. 自己写SQL层的存储函数。代码如下写死了3个,没有优化,仅仅作为演示,MySQL 里非常不建议写这样的函数。

热心网友 时间:2022-05-08 04:33

替换成什么格式呢?
MYSQL中貌似是不支持正则替换的
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
苹果电脑电池充不进电苹果电脑充不进去电是怎么回事 苹果电脑不充电没反应苹果电脑充电指示灯不亮充不了电怎么办 狗狗更加忠诚护家、善解人意,养一只宠物陪伴自己,泰迪能长多大... 描写泰迪狗的外形和特点的句子 国外留学有用吗 花钱出国留学有用吗 !这叫什么号 百万医疗赔付后是否可以续保 前一年理赔过医疗险还能续保吗? 医疗住院险理赔后还能购买吗? 保险理赔时保险合同没有规定做司法鉴定却让我做鉴定才给理赔是不是保险公司违规? 修车的地方和保险公司有利益关系吗? 如果保险费是一万元,那4S店送修比率是多少 车损资源使用率和保费送修比指的是什么? 事故车送修比怎么算 我想找一个离石家庄站市区不远的酒店有会议室的能开年会 价格合理的 东莞有什么地方好玩,最好是离东莞近点 惠州淡水桑拿有免费接送车吗?我在龙岗 《长安十二时辰》里右相府里的花房增温系统是汗蒸、桑拿的雏形么? 谁有长安桑拿订房电话,实惠点的? 长安哪里有桑拿联系方式? 长安那有洗桑拿的。 为什么在充值APPstore时充值信息会发到华为手机上? Appstore国内可以用google admob吗 华为mate出现com.qihoo.appstore已停止运行 怎么办 时尚穿搭app有哪些? 建筑工地上堆放的木材都有什么用途 木头有什么用途 木头有什么作用? 木的作用是? 在QQ上的兴趣部落里发表评论,一天都是“你的操作过于频繁,请稍后再试”,不论是清除缓存还是卸载重新 光纤跳线单多模的区别 从表面怎么区分单模双模光纤?光纤与光纤跳线什么区别?一般见得跳线 20岁的女生应该选哪种性感暧昧的香水 阿迪香水,冰点和征服哪一款比较好点? 怎么能做到让男人感觉若即若离呢? 香水喷哪里留香久? 有部电影是讲香水什么的,男主角特别变态,从女人身上提炼最香的味道!是... 男朋友兄弟结婚,我可以送女方香水嘛? 何为女人味,是不是喷了香水就有女人味啊? 大金挂壁空调操作方法 大金空调为什么拔了插头再插就能开机了? daikin家用中央空调怎么开 下列关于IE浏览器设置的说法,正确的是? (3分) IE浏览器的自动完成功能可以应用于Web地址,只要在自动完成 ie浏览器是唯一可以浏览网页的工具说法正确吗 mysql里有mysql_fetch_row(),请问在sqlite中 有sqlite_fetch_row()吗 一个女生在群里从来都不说话。只抢红包。这是个什么样的人。。 同学群,只抢红包,不说话的,什么心理 抢红包只抢不发的人,在现实生活中是一个什么样的人? 小米手机便签消息如何多条一次性发给他人?