zoukankan      html  css  js  c++  java
  • oracle将id串转换为名字串

    今天碰到一个小问题,需要将一个字段中用逗号隔开的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,1,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,b,c', '[^,]', null))
  • 相关阅读:
    一款新型的智能家居WiFi选择方案——SimpleWiFi在无线智能家居中的应用
    智能手机的工业控制应用方案——SimpleWiFi在工业控制领域应用
    一种单片机支持WiFi的应用——SimpleWiFi在单片机中的应用
    TI推出SimpleLink低能耗蓝牙CC2541
    SimpleWiFi模块评估板
    Android架构设计和软硬整合完整训练
    CentOS上解压ZIP乱码的解决办法
    更具体的描述JNI
    数据市中心全省中国mysql脚本
    几种方法枚举子集
  • 原文地址:https://www.cnblogs.com/anningkang/p/11552041.html
Copyright © 2011-2022 走看看