myysql的正则表达式

上周遇见一个需求,有这样一棵树:

点击上级,展现所有子集,点击集团,显示所有产线(例子)

这个时候有两种方式:

添加产线时,将集团、事业部、公司、车间的id存起来。

然后点击查询时,将不同的id带入。

这样做的缺点就是,查询会很麻烦,区分查询。

另一种是:

一个treePath字段,存放树路径id:

集团id,事业部id,公司id,车间id,产线id

例子:点击集团时,将集团id和treePath进行in比较。如果包含,就说明是这个集团的数据。

sql 复制代码
 CONCAT (',',tree_path,',' ) LIKE CONCAT( '%,',集团id,',%' )

先将源数据加一个左右各一个逗号,保证不会出现这种情况!!!

treePath:1001,221,333

集团id:10

挖槽,直接GG

1001也符合!!

所以我们左右各加一个逗号变成:

treePath:,1001,221,333,

集团id:,10,

哈哈哈哈哈哈哈,这样就不会出现那种情况了,我真是天才啊!

用正则就是这样:

sql 复制代码
CONCAT (',',tree_path,',') REGEXP ',(集团id),'

话不多说,直接上态度:

sql 复制代码
select *from `user` as u where u.`name` REGEXP 'ab?c';-- c出现0次或者1次

select *from `user` as u where u.`name` REGEXP 's*c';-- s出现0次或者多次

select *from `user` as u where u.`name` REGEXP 'ab+c';-- b出现1次以上的字符

select *from `user` as u where u.`name` REGEXP 'a.c';-- 以a开始,c结束。.可以代表无数个,相当于模糊查询的%

select *from `user` as u where u.`name` REGEXP 'b{2,}';-- b连续出现2次以上

select *from `user` as u where u.`name` REGEXP 'b{2}';-- b连续出现2次

select *from `user` as u where u.`name` REGEXP 'b{2,3}';-- b连续出现2-3次

select *from `user` as u where u.`name` REGEXP 'b{2}|a{3}';-- b连续出现2次或者a连续出现3次

select *from `user` as u where u.`name` REGEXP '[acs]';-- 包含这三个字母组成

select *from `user` as u where u.`name` REGEXP '[a-b]';-- 包含a-c组成

select *from `user` as u where u.`name` REGEXP '^a';-- 以a开头
 
select *from `user` as u where u.`name` REGEXP 's$';-- 以c结尾
相关推荐
I Am a robert girl4 分钟前
从 GameHorizon 拆解多时间尺度游戏评测:数据管线、离线基准与在线回放的三层设计
数据库·游戏·多时间尺度·数据管线·游戏评测·离线基准·在线回放
前端的日常13 分钟前
一个人+AI做情侣食谱小程序,0 费用的服务器
前端·后端
躺柒23 分钟前
读数据安全架构设计与实践17安全架构案例(下)
数据库·安全·零信任·安全架构·防火墙·无边界
SelectDB41 分钟前
实时更新排错现场:导入了却查到旧数据,和 FINAL 越加越慢的两条路
大数据·数据库·数据分析
计算机魔术师43 分钟前
谷歌搜索广告踩刹车,AI广告成为救命稻草
前端
总要学点什么1 小时前
第81篇:数据可视化-PM2.5分布——让圆点的胖瘦替每座城市报出浓度
前端·信息可视化·echarts·cesium·空间分析
IT_陈寒1 小时前
Vue的v-for里用了个临时变量,页面直接挂了
前端·人工智能·后端
hunter_0761 小时前
一次 iOS 真机签名 409 的完整排查:证书、设备、描述文件为什么总是"对不上"
前端
枣把儿1 小时前
开源!公众号排版+一键发布工具懒人版
前端
SelectDB1 小时前
拿 Planet 的账单一行行对下来,我总结出三个可自查的校验点
大数据·数据库·数据分析