oracle pl sql split string to array

在 Oracle 中,可以使用正则表达式来将字符串拆分为数组。

例如,假设你想将字符串 'abc,def,ghi' 拆分为数组,你可以使用以下代码:

declare
  l_string   varchar2(100) := 'abc,def,ghi';
  l_arr      sys.odcinumberlist;
begin
  select regexp_substr(l_string, '[^,]+', 1, level)
  bulk collect into l_arr
  from dual
  connect by level <= regexp_count(l_string, ',') + 1;
  -- 打印出 l_arr 的内容
  for i in l_arr.first..l_arr.last loop
    dbms_output.put_line(l_arr(i));
  end loop;
end;

输出结果应为:

正则表达式 '[^,]+' 表示一个或多个非逗号字符,regexp_substr 函数可以使用此表达式来提取逗号分隔的子串。regexp_count 函数可以用来计算字符串中逗号的数量,这样我们就可以使用一个循环来处理每个子串。

上述代码使用了 Oracle 的 bulk collect 语句,它可以批量地将数据插入到数组中。这样可以比使用单独的 insert 语句更快地将数据加载到数组中。

希望这些信息能帮到你。

  •