一个字段中多个部门id逗号隔开的,如何获取到多个部门对应的这条数据?

img

应该怎么可以查询到这种效果?部门id 里面有两个部门id,是用逗号隔开的!
注:神通数据库~

神通数据库哈

基本思路有了先占坑晚上回家弄些补充答案

神通数据库没用过,如果是高版本的mssql,可以直接 string_split,低版本的可以自己实现一个split方法,神通数据库如果支持自定义函数,或者有相关内置函数,可以直接自己做个自定义函数或直接调用

mssql写法

select id,姓名,b.部门id from table a
cross apply (
select * from string_split('部门id',',') as 部门id
) b

神通数据库没用过,但是参照mysql的解决方案:

SELECT u.id,u.name,SUBSTRING_INDEX(SUBSTRING_INDEX(u.dept_id,',',help_topic_id+1),',',-1) AS num 
FROM mysql.help_topic
JOIN `user` AS u
WHERE help_topic_id < LENGTH(u.dept_id)-LENGTH(REPLACE(u.dept_id,',',''))+1

这里的user表的dept_id为逗号分隔的部门ID集合
主要用到以下几个函数:
1、字符串拆分: SUBSTRING_INDEX(str, delim, count)
str     需要拆分的字符串
delim    分隔符,通过某字符进行拆分
count    当 count 为正数,取第 n 个分隔符之前的所有字符; 当 count 为负数,取倒数第 n 个分隔符之后的所有字符。

2、获取字符串长度:LENGTH( str )
str     需要计算长度的字符串

3、替换函数:replace( str, from_str, to_str)
str      需要进行替换的字符串
from_str   需要被替换的字符串
to_str     需要替换的字符串

只要神通数据库有相关函数有以上类似的都可以试试

此处也主要利用 mysql 库的 help_topic 表的 help_topic_id 来作为变量,因为 help_topic_id 是自增的
也可以神通数据库自己维护一个表 专门维护连续的数字 来替代elp_topic 表的 help_topic_id,例如只维护0,1,2,3,4,5,6,7