通过传入的字符串并根据分隔符截取出目标字符串

    刚刚写一接口的时候,外围系统需要传入一个字符串来作为查询条件查询数据,最后由财务系统返回数据至外围系统,但传入的一个变量数据是一个整体,需要截取获取目标字符串才能作为查询条件,于是写一函数,记录于此以备后用:

–通过传入的字符串并根据分隔符截取出目标字符串(分隔符为',',可自定义分隔符)

declare
  p_str   varchar2(1000) := 'a,c,g';
  l_count number := 0;
  l_str   varchar2(100); –目标字符串数据
begin
  –首先获取字符串特别字符的数量
  select nvl(length(regexp_replace(p_str, '[^,]', '')) + 1, 0)
    into l_count
    from dual;

  –如果只有一个字符段,则不处理 
  if l_count = 0 then
    dbms_output.put_line('Data: ' || p_str);
  end if;
  –如果有多个字符段,则分割
  if l_count <> 0 then
    for i in 1 .. l_count loop
      select regexp_substr(p_str, '[^,]+', 1, i) as str
        into l_str
        from dual;
      dbms_output.put_line('Data' || i || ':' || l_str);
    end loop;
  end if;
exception
  when others then
    dbms_output.put_line('error code :' || sqlcode);
    dbms_output.put_line('error msg  :' || sqlerrm);
end;

发表回复

您的电子邮箱地址不会被公开。