两个或多个字段中含有多个用逗号分开的id字符串,不用函数,如何直接用正则表达式怎样匹配另一张表的name

图片说明图片说明

如上图,有两张表,学生和选课表



用函数实现(getCourseName)

BEGIN
declare result VARCHAR(255);    
        set result = '';
          select group_concat(temp.C_NAME) into result from(
          SELECT d_course.C_NAME FROM d_course 
          WHERE FIND_IN_SET(d_course.ID,`idList`)
          ORDER BY FIND_IN_SET(d_course.ID,`idList`)
          ) as temp;
  return result; 
END


视图代码

SELECT d_student.ID,d_student.S_NAME,d_student.S_BXK_ID ,d_student.S_XXK_ID,
getCourseName(d_student.S_BXK_ID) as S_BXK_LIST,getCourseName(d_student.S_XXK_ID) as S_XXK_LIST
from d_student 


实现效果

图片说明



那么我现在怎么不用函数,直接用正则表达式直接在视图定义里实现上图一样的效果呢?

先不论能不能实现,设计上肯定有缺陷,像这样用逗号间隔的字符串极少在正式项目中使用,虽然存储简单,但是给查询带来极大不便,而且不能保证数据的有效性(关系约束)

建议将字段拆分成关系表