应该怎么可以查询到这种效果?部门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