Agile PLM: 批量快速删除Multlist重复值

本文介绍AgilePLM系统中MultiList字段出现重复值的问题及解决方案,通过数据库查询定位问题,并提供批量去重函数实现快速修正。

文章主题

Agile PLM在升级过程中,常常可能会出现MultiList出现重复值的情况,本人介绍最直观的分析方法和批量去重复值的函数加以快速解决。

比如如下截图,TESTPART001的PageTwo页上的CM Access栏位出现多个重复值,且不止一个值。


分析解决

由于这个栏位定义在PageTwo上,因此需要在数据库中先查找对应的表和字段。查看JavaClient中的设置,可以得知。如下图。



再需要查找对应的TESTPART001的ID,最快捷的方式是鼠标放在任意一个tab上,查看浏览器下访的Javascript提示。



查表确认。


接着可以查找Page_Two表中的Multilist02字段,可以明确看到多个重复值。对于少量行数的重复值,可以手动SQL修改。但往往情况比较复杂,出现了大批量item的重复值。


提供一个函数来批量删除。

create or replace function remove_dup_vals (p_string in varchar2) return varchar
   is
     l_output_string varchar2(4000) :='';
   begin
   FOR X IN (
     with data_rows  as
     (
     select
      trim( substr (txt,
            instr (txt, ',', 1, level  ) + 1,
            instr (txt, ',', 1, level+1)
               - instr (txt, ',', 1, level) -1 ) )
        as token
      from (select ','||p_string||',' txt
              from dual)
    connect by level <=
       length(p_string)-length(replace(p_string,',',''))+1
    )
   SELECT distinct * FROM data_rows)
  LOOP
    l_output_string :=l_output_string||','||x.token;
  END LOOP;
  return ',' || substr(l_output_string,3) || ','; 
END;

示例

update page_two set multilist02 = remove_dup_vals(multilist02) where id=967250145;
commit;


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值