robinCYY 2020-08-21 16:50 采纳率: 0%
浏览 175

两个或多个字段中含有多个用逗号分开的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 


实现效果

图片说明



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

  • 写回答

1条回答 默认 最新

  • jingluan666 2020-08-21 20:48
    关注

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

    建议将字段拆分成关系表

    评论

报告相同问题?

悬赏问题

  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 shape_predictor_68_face_landmarks.dat
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 对于相关问题的求解与代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 信号傅里叶变换在matlab上遇到的小问题请求帮助
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作
  • ¥15 求NPF226060磁芯的详细资料