SQL正则表达式的妙用

需求背景:

存在一张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等其他限制条件

猜你喜欢

转载自www.cnblogs.com/shuhe-nd/p/11436745.html