建议函数FIND、GETUSERDEPARTMENTS等增加反向查找功能

我是社区第184930位番薯,欢迎点我头像关注我哦~
1.字符串函数FIND只能正向查找,遇到需要反向查找的情况非常麻烦,需要先把字符串分割为数组(SPLIT),再对数组倒序(REVERSEARRAY),查找位置后再截取字符串(RIGHT)。建议对FIND函数增加反向查找功能,或增加字符串倒序函数。
2.获取当前用户部门函数GETUSERDEPARTMENTS也只能正向查找,获取顶层部门很方便,只需用参数1即可,却没有办法获取底层部门(当前用户直接所属部门)。比如:用户user1属于dept1/dept1-2/dept1-2-1,想要获取dept1只需传入参数1即可,想要获取dept1-2-1却没有办法。建议对GETUSERDEPARTMENTS函数增加反向查找功能,例如用负数实现从底层向顶层查找。
编辑于 2020-3-24 14:32  

发表于 2020-3-19 10:11:40
给你个sql脚本,你看看满足不满足你的要求,你可以根据这个脚本去更改
DECLARE @text VARCHAR(MAX)
SET @text='dept1/dept1-2/dept1-2-1'
DECLARE @I INT
DECLARE @e INT
SET @i=2 --取第几级部门
WHILE @I>0
BEGIN
SET @e=CHARINDEX('/',@text)
IF @e=0 OR @I=1
BEGIN
IF @e<>0
BEGIN
SET @text=LEFT(@text,@e-1)
END
BREAK
END
select @text=substring(@text,charindex('/',@text)+1,len(@text));
SET @i=@i-1
END
SELECT @text

发表于 2020-3-19 10:13:52
我这个只是SQLSERVER的脚本,要是其他的数据库你可以找到跟这个脚本一样功能的函数替换就行,不过逻辑是一样的
发表于 2020-3-19 11:07:57
ljyoem 发表于 2020-3-19 10:13
我这个只是SQLSERVER的脚本,要是其他的数据库你可以找到跟这个脚本一样功能的函数替换就行,不过逻辑是一样 ...

通过函数能够实现,就是太麻烦了!
我实现的取底层部门代码:
  1. query($fine_position, "$ instanceof Array ? $.map(el => el.departments.substring(el.departments.lastIndexOf(',')+1)) : $.departments.substring($.departments.lastIndexOf(',')+1)")
复制代码
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

3回帖数 1关注人数 7039浏览人数
最后回复于:2020-3-19 11:07

返回顶部 返回列表