oralce将id串转换为名字串

oralce将id串转换为名字串,第1张

概述今天碰到一个小问题,需要将一个字段中用逗号隔开的id串,转换为名字的样子显示出来,本着方便的原则,就在oracle中写了个函数,完美的解决了这个问题, /**将安全警示通告类型的id串转换为名字串,方便显示用**/ create or replace function risk_ids_to_names( av_str varchar2 --要转换的ids                     

今天碰到一个小问题,需要将一个字段中用逗号隔开的ID串,转换为名字的样子显示出来,本着方便的原则,就在oracle中写了个函数,完美的解决了这个问题,

/**将安全警示通告类型的ID串转换为名字串,方便显示用**/
create or replace function risk_IDs_to_names(
av_str varchar2 --要转换的IDs
                                             )
return varchar2 is
  lv_str        varchar2(1024);
  lv_strOfIndex varchar2(1024);
  risk_ID       varchar(200);
  risk_name     varchar2(200);
  lv_length     number;
begin
  lv_str    := rtrim(av_str);
  lv_str    := concat(lv_str,‘,‘);/**最后追加一个逗号,否则得到的结果集会缺少最后一个**/
  lv_length := length(lv_str);
  if lv_length = 0 then
    lv_strOfIndex := ‘待定‘;
  else
    /**循环ID获取名字拼接字符串**/
    for i in (select regexp_substr(lv_str,‘[^,]+‘,1,rownum) as riskID from dual connect by rownum<=length(regexp_replace(lv_str,]‘,null))) loop
      risk_ID := i.riskID;
      select typename into risk_name from SEC_ATTACHREPORT_TYPE where typeID = i.riskID;
      risk_name := concat(risk_name,‘);/**拼接名字和逗号**/
      lv_strOfIndex := concat(lv_strOfIndex,risk_name);/**在原先的名字字符串后面追加**/
    end loop;
     lv_strOfIndex := substr(lv_strOfIndex,length(lv_strOfIndex) -1 );/**去掉最后的逗号**/
   end if;
return lv_strOfIndex;
end risk_IDs_to_names;

  这个函数中用到了拆分ID串,for循环,因为对直接在Oracle中写函数不太熟悉,是一边百度一边写成的,碰到了一些麻烦,但功夫不负有心人,又成长了一点点。哈哈。

/**将IDs字符串用逗号分割开,以结果集的形式输出出来**/select regexp_substr(a,b,c,[^,]+,1,rownum) as riskID from dual connect by rownum<=length(regexp_replace(a,],null))
总结

以上是内存溢出为你收集整理的oralce将id串转换为名字串全部内容,希望文章能够帮你解决oralce将id串转换为名字串所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/sjk/1152830.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-31
下一篇 2022-05-31

发表评论

登录后才能评论

评论列表(0条)

保存