问题:现在有张表keyword 有字段 engineid
        另一张表engine 字段 id
   
       keyword表中的engineid存放的是多个engine 的id号,例如:1,2,3,4,5,6
       
       现在我删除engine表中id为6的数据
       请问 我怎么把keyword表 engineid中有6,就把6把删除,没有6 不需要修改...
         

解决方案 »

  1.   

    你必须得写个函数或者存储过程,先用split(",")进行分解,然后用游标循环,每取一个值进行判断,符合条件就到下个记录,不是6就拼成新的字符串,最终更新该字段为新的字符串。
      

  2.   

    60不算 只删除6 
    就是我在engine表是删除一条记录 我要到keyword表中 把engineid 中包含对应id给删除...
      

  3.   

    分两步做,第一个delete engineid='6'的
    第二部,update,把 update  set engineid=ltrim(rtrim(replace(','||engineid||',',',6,',null),','),',')
      

  4.   

    把null改成','
    SQL> select ltrim(rtrim(replace(','||'1,2,3,4,5,6,7'||',',',6,',','),','),',') from dual;
     
    LTRIM(RTRIM(REPLACE(','||'1,2,
    ------------------------------
    1,2,3,4,5,7
     
    SQL> 
      

  5.   

    谢谢 minitoy
    结贴给分....
      

  6.   

    -- 无非就两种情况:'6,'与',6'嘛!
    update keyword
    set keyword=replace(keyword,'6,','')
    where keyword like '%6,%';update keyword
    set keyword=replace(keyword,',6','')
    where keyword like '%,6';