字符串格式如:数字A数字A数字A数字A数字
分别取出数字,依次进行update
update table1
set        need=‘Y’
where  id=数字

解决方案 »

  1.   

    UPDATE table1 SET need='Y'
    WHERE to_char(id) IN  replace('数字A数字A数字A数字A数字','A',',');commit;
      

  2.   

    SORRY,我也是忍无可忍,等等,我找个帖子出来。
    其人多次挑衅
    http://topic.csdn.net/u/20100225/14/A73B7C1A-0685-48C0-AC98-137225F7F0BF.html
      

  3.   

    SQL> UPDATE area SET status='2' WHERE to_char(areaid) IN replace('301A302A303A304A305','A',',');0 rows updatedSQL> rollback;Rollback completeSQL> 我只是抛砖引玉,仅供参考。
      

  4.   

    这个WHERE to_char(areaid) IN replace('301A302A303A304A305','A',',');
    应该是to_char(areaid)在in 后面的若干个值的范围里
    这里的replace...虽然将字符串变化成'x,x,x,x,x'形式,但本质上还只是一个字符串,不能达到想要的效果
      

  5.   

    按suiziguo的理解,我认为可以稍微改下
    UPDATE area SET status='2' WHERE ','||replace('301A302A303A304A305','A',',')||',' like '%,'||to_char(areaid)||',%';
      

  6.   


    主要的工作是把你那个由字符A分割的数字字符串拆成单独的数字,方法如下:
    UPDATE TABLE1
       SET NEED = 'Y'
     WHERE ID IN
           (SELECT SUBSTR('A' || S || 'A',
                          INSTR('A' || S || 'A', 'A', 1, ROWNUM) + 1,
                          INSTR('A' || S || 'A', 'A', 1, ROWNUM + 1) -
                          INSTR('A' || S || 'A', 'A', 1, ROWNUM) - 1) o
              FROM (SELECT '数字1A数字2A数字3A数字4A数字5' S FROM DUAL)
            CONNECT BY ROWNUM <= LENGTH(S) - LENGTH(REPLACE(S, 'A')) + 1);