将数组分开

 --返回字符串的第一个WORD,字符串的word以逗号(,)分隔
  FUNCTION get_word(p_old_str VARCHAR2, p_new_str OUT VARCHAR2)
    RETURN VARCHAR2 IS
    v_start NUMBER; --循环控制参数,开始位置
    v_end   NUMBER; --循环控制参数,截止位置
  BEGIN
    v_start := 1;
    v_end   := INSTR(p_old_str, ',', v_start);
    IF v_end > 0 THEN
      p_new_str := SUBSTR(p_old_str, v_end + 1, LENGTH(p_old_str));
      RETURN SUBSTR(p_old_str, v_start, v_end - 1);
    ELSE
      p_new_str := '';
      RETURN p_old_str;
    END IF;
  END get_word;

  ------------------------------------------------------------------------
  --将传入的字符串,从"|"分割变成","分割
  FUNCTION get_adjust_str(p_old_str VARCHAR2) RETURN VARCHAR2 IS
    v_return        VARCHAR2(10000);
    v_values        VARCHAR2(10000); --中间缓存的字符串变量
    v_adjust_word   VARCHAR2(100); --单个单词
    v_adjust_values VARCHAR2(10000); --组装的字符串
  BEGIN
    --赋初值
    v_return        := '';
    v_adjust_values := '';
    v_values        := p_old_str;
    --循环得到调整的字符串
    WHILE v_values IS NOT NULL LOOP
      v_adjust_word   := get_a_word(v_values, v_values);
      v_adjust_values := v_adjust_word || ',' || v_adjust_values;
    END LOOP;
    --将不为空的字符串传出
    IF v_adjust_values IS NOT NULL THEN
      -- 判断最后是否为逗号
      IF SUBSTR(v_adjust_values, LENGTH(v_adjust_values), 1) = ',' THEN
        v_adjust_values := SUBSTR(v_adjust_values,
                                  0,
                                  LENGTH(v_adjust_values) - 1);
      END IF;
      v_return := v_adjust_values;
    END IF;
    RETURN v_return;
  END get_adjust_str;

  ------------------------------------------------------------------------
  --返回字符串的第一个WORD,字符串的word以逗号(|)分隔
  FUNCTION get_a_word(p_old_str VARCHAR2, p_new_str OUT VARCHAR2)
    RETURN VARCHAR2 IS
    v_start NUMBER; --循环控制参数,开始位置
    v_end   NUMBER; --循环控制参数,截止位置
  BEGIN
    v_start := 1;
    v_end   := INSTR(p_old_str, '|', v_start);
    IF v_end > 0 THEN
      p_new_str := SUBSTR(p_old_str, v_end + 1, LENGTH(p_old_str));
      RETURN SUBSTR(p_old_str, v_start, v_end - 1);
    ELSE
      p_new_str := '';
      RETURN p_old_str;
    END IF;
  END get_a_word;

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值