表结构和内容如下SQL> desc E_MS_TASK;
Name               Type           Nullable Default Comments 
------------------ -------------- -------- ------- -------- 
ID                 VARCHAR2(32)                                        
NAME               VARCHAR2(255)                            
DESCRIPTION        VARCHAR2(1000)     Y   
E_MS_TASK范例数据
ID  Name DESCRIPTION
1   sp1  AA_1001_CCC
2   sp3  AA_1001_CCC
3   sp4  AA_1002_CCC
4   sp5  AA_1003_CCC
5   sp5  AA_1003_CCCSQL> desc E_MS_TASK_ARG;
Name               Type           Nullable Default Comments 
------------------ -------------- -------- ------- -------- 
ID                 VARCHAR2(32)                                        
NAME               VARCHAR2(255)         
value               VARCHAR2(255)  Y                               
范例数据
ID  Name  value
1   1001  Tom
2   1002  Jerry
3   1003  Mike
4   1004  Kelly
5   1005  John希望E_MS_TASK最终数据
范例数据
ID  Name DESCRIPTION
1   sp1  AA_Tom_CCC
2   sp3  AA_Tom_CCC
3   sp4  AA_Jerry_CCC
4   sp5  AA_Mike_CCC
5   sp5  AA_Mike_CCC即要做一个替换功能,把1001这样的字符串替换成另外一个字符串
而替换规则定义在E_MS_TASK_ARG中,请问这个sql应当怎么写,请大虾指教啊 有人把E_MS_TASK_ARG这样的表称做维表,其实确切说 还是数据字典表
只是一说 数据字典表总是会让人想起oracle的数据字典表

解决方案 »

  1.   

    是否确定E_MS_TASK的格式都是  XXXXX_1001_XXXXXX 即有两个下划线
    如果可以update E_MS_TASK t1 set DESCRIPTION        
    = (select substr(t1.DESCRIPTION ,0,instr(t1.DESCRIPTION,'_'))
    || t2.value || 
    substr(t1.DESCRIPTION ,instr(t1.DESCRIPTION ,'_',1,2),length(t1.DESCRIPTION)) 
    from E_MS_TASK_ARG t2
    where t2.name = substr(t1.DESCRIPTION,instr(t1.DESCRIPTION,'_',1,1)+1,
    instr(t1.DESCRIPTION,'_',1,2) -instr(t1.DESCRIPTION,'_',1,1)-1))
    最好写成一个procedure来处理,可以添加出错处理。
      

  2.   

    是否确定E_MS_TASK的格式都是  XXXXX_1001_XXXXXX 即有两个下划线
    如果可以update E_MS_TASK t1 set DESCRIPTION        
    = (select substr(t1.DESCRIPTION ,0,instr(t1.DESCRIPTION,'_'))
    || t2.value || 
    substr(t1.DESCRIPTION ,instr(t1.DESCRIPTION ,'_',1,2),length(t1.DESCRIPTION)) 
    from E_MS_TASK_ARG t2
    where t2.name = substr(t1.DESCRIPTION,instr(t1.DESCRIPTION,'_',1,1)+1,
    instr(t1.DESCRIPTION,'_',1,2) -instr(t1.DESCRIPTION,'_',1,1)-1))
    最好写成一个procedure来处理,可以添加出错处理。
      

  3.   

    是sql2005吗??有个APPLY函数 你看看
      

  4.   

    是否确定E_MS_TASK的格式都是  XXXXX_1001_XXXXXX 即有两个下划线 
    如果可以 不能确定啊是oracle9i 啊大虾指教啊