需求背景:

存在一张project表,表里面包含了字段(id,name,description,member_ids等字段)

其中member_ids表示参与了该项目的员工工号所拼接的字符串类似于:10001,10002,10003,10005

这时,如果要统计某个员工参与了的项目个数,那么有如下sql

select count(*) from project where member_ids like "%具体员工ID%"

但是,如果要统计某个部门下,所有员工参与的项目总数,那么就没办法这么写了。

这时,有两种思路:

一、是根据员工ID一条一条去查询具体员工所参与的项目ID,然后汇总所有员参与的项目ID,并且进行去重,然后求总数是多少。这种方法对于员工数量很多的部分,就得分别查询n次数据库,性能上存在问题。

二、先查出所有员工的ID,然后使用正则表达式进行查询,只需要查询一次即可获得数据

具体方法为:

1、先根据部门,查出所有该部门下的员工信息

2、将该部门下的员工ID进行字符串拼接,拼接方式为正则表达式:类似于:idsStr = "10002|10003"

3、从project表中进行查询,语句如下:

select count(*) from project where member_ids REGEXP idsStr and xxx等其他限制条件

转载于:https://www.cnblogs.com/shuhe-nd/p/11436745.html

SQL正则表达式的妙用相关推荐

  1. Git/SQL/正则表达式练习平台

    Git/SQL/正则表达式 文章目录 Git/SQL/正则表达式 一.练习 Git 二.练习正则表达式 三.练习 SQL 下面介绍几个平台,分别是学习 Git.SQL.正则表达式的在线练习平台. 一. ...

  2. Mysql教程(五)---SQL正则表达式

    "无意中发现了一个巨牛的人工智能教程,忍不住分享一下给大家.教程不仅是零基础,通俗易懂,而且非常风趣幽默,像看小说一样!觉得太牛了,所以分享给大家.点这里可以跳转到教程.". 目录 ...

  3. T SQL + 正则表达式

    由于要验证某栏位的内容是否符合一定要求,最好的办法是用正则表达式,因为SQL Server 2000里面还没找到可以try catch的好办法,所以就找看能否加正则表达式,结果还真被我都搜索到了 验证 ...

  4. oracle中正则表达式规则,Oracle SQL 正则表达式

    From:http://blog.sina.com.cn/s/blog_69e7b8d701012tuj.html 在oracle数据库当中有字符处理的函数,比如substr().replace()和 ...

  5. SQL Server通配符妙用

    在某些情况下熟悉SQL Server 通配符的使用可以帮助我们简单的解决很多问题. --使用_运算符查找Person表中以an结尾的三字母名字 USEAdventureWorks2012; GO SE ...

  6. SQL正则表达式进行搜索

    基本字符匹配 select prod_name from products where prod_name regexp '.000' order by prod_name; 分析 这里使用了正则表达 ...

  7. Python中正则表达式的妙用。

    转自:微点阅读(www.weidianyuedu.com)微点阅读 - 范文大全 - 免费学习知识的网站 导语 正则表达式就是从字符串中发现规律,并通过"抽象"的符号表达出来.打个 ...

  8. VSCode 正则表达式的妙用

    如何删除多余的空行(换行) 实际工作中遇到一个问题 -- 从网上复制的文本添加了太多的换行,但是我又想知道它一共多少行,如果一行一行删的话,那显然不符合我们程序猿 "能偷懒就偷懒" ...

  9. SQL 正则表达式检索数据表中某字段值全是数字

    select COUNT(id) from biz_productall where (barcode REGEXP '[^0-9]') != 0 AND barcode != ''      AND ...

  10. SQL Server中执行正则表达式

    总体方案:写function,再执行update语句. 一.查询函数 -- ============================================= -- Author: <l ...

最新文章

  1. C#中的 具名参数 和 可选参数
  2. Oracle-UNDO表空间解读
  3. App Engine中的Google Services身份验证,第2部分
  4. 使用临界段实现优化的进程间同步对象-原理和实现
  5. 吴恩达机器学习作业Python实现(三):多类分类和前馈神经网络
  6. BOM模型中常用对象 定义计数器 网页跳转 网页前进后退
  7. LeetCode113. 路径总和||
  8. Layer单选框非空校验注意
  9. 记一次幸运的拼多多Web前端面试(一面+二面+hr面)
  10. 用Bat文件创建桌面快捷方式
  11. 图解GC(垃圾回收)复制算法加强版(1)Cheney的复制算法
  12. 【R - 代码书写习惯、代码注释方法笔记】
  13. 小分子结合位点/成药位点识别工具-PointSite
  14. miniSIP网络电话服务器搭建教程
  15. Ubuntu16.04中命令及配置
  16. 精易编程助手 V2.35 正式版
  17. AI绘画,治愈着甲方乙方的“恩怨情仇”
  18. 论文阅读和分析: “How Attentive are Graph Attention Networks?”
  19. 基于微信小程序的军迷社区交易系统的设计与实现
  20. 利用5次shift弹出粘滞键破解部分win7/win10密码

热门文章

  1. kubernetes集群搭建(二进制方式)
  2. Flutter动画系列之SizeTransition
  3. 开工利是!循序渐进~
  4. 一线城市的繁荣vs年轻人的梦想?
  5. H.264技术及原理
  6. FFmpeg总结(十二)用ffmpeg与nginx实现直播多路流并发播放
  7. 使用第三方框架解耦的一种思路—简单工厂模式的运用
  8. redis的key_value截图深入学习
  9. 查询今天、昨天、本周、上周、本月、上月数据
  10. defunct 进程占用端口_纯干货:23个服务器常见问题处理方法!