上图中的Depart_Admin
该列中存储的值为字符串,如果多个用','or';'隔开
现我需要批量移'除掉'depart_admin列中值为manager或者depart_admin中包含manager的
即将manager,rs81修改为rs81.

解决方案 »

  1.   

    update tt set depart_admin=replace(depart_admin,'manager,','')
      

  2.   

    select replace(depart_admin,'','manager,rs81') from tb
      

  3.   


    你这个我也想到了,但是有个问题:如果depart_admin列中存在'manager,rs81'按照这种方式替换了之后该列的值就是',rs81'这不是还的去掉','?
      

  4.   

    你可以把manager和,以及;的组合列出来,多层replace
      

  5.   

    update tb set depart_admin=replace(depart_admin,'manger,','');
      

  6.   

    如果你数据量比较大的话,效率肯定不会多高,但是一个replace实现不了你的要求
      

  7.   


    按照这种方式 我表中Depart_admin列中如果存储的值如果为',rs81,,rs810,rs811'
    哪你告诉我,我要怎么样才能根据用户Id查询出部门管理员是rs81的部门?
      

  8.   

    select * from tt where instr(concat(',',Depart_admin,','),',rs81,')>0
      

  9.   

    如果你的目的是查询,你可以用rs81与,;组合取匹配,可以不用replace。
    例如SELECT * 
    FROM ( 
    SELECT 'aaa,cc,dd' AS M 
    UNION SELECT 'aaa,ccd,dd' AS M 
    UNION SELECT 'aaa,cc;dd' AS M 
    UNION SELECT 'aaa,cc' AS M ) tmp 
    WHERE M REGEXP '(^cc,)|(^cc;)|(,cc,)|(,cc;)|(;cc,)|(;cc;)|(,cc$)|(;cc$)'
      

  10.   

    我的第一个目的是批量修改当然在修改完之后我需要考虑是否会影响到查询。
    现在解决了 
    1、先用replace替换 
    2、后用这样就可以解决所有问题了,顺便
    问一句12L如果用这种转换然后查找的方式性能如何 5W的数据大概需要花费多少时间?
      

  11.   

    全模糊查询无法使用索引,我最开始是用REGEXP来处理的但是后面就发现他无法满足需求了