加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

oracle – PL / SQL逗号分隔列表;删除重复并放入数组

发布时间:2020-12-12 13:49:41 所属栏目:百科 来源:网络整理
导读:我有一个逗号分隔列表作为PL / SQL过程中的字符串.我需要 删除重复项 将列表放入数组中. 我找到了多种方法,但不是两者兼而有之. 有帮助吗? 将逗号分隔列表转换为行有一个众所周知的SQL技巧.只需使用该技巧,添加DISTINCT关键字,并将结果BULK COLLECT到您的数
我有一个逗号分隔列表作为PL / SQL过程中的字符串.我需要

>删除重复项
>将列表放入数组中.

我找到了多种方法,但不是两者兼而有之.
有帮助吗?

将逗号分隔列表转换为行有一个众所周知的SQL技巧.只需使用该技巧,添加DISTINCT关键字,并将结果BULK COLLECT到您的数组中(我假设您的意思是集合).
DECLARE
  p_test_string   VARCHAR2 (4000) := 'A,B,C,D';

  TYPE string_array_type IS TABLE OF VARCHAR2 (4000);

  l_array         string_array_type;
BEGIN
  SELECT DISTINCT REGEXP_SUBSTR (p_test_string,'[^,]+',1,LEVEL)
  BULK   COLLECT INTO l_array
  FROM   DUAL
  CONNECT BY REGEXP_SUBSTR (p_test_string,LEVEL)
               IS NOT NULL
  ORDER BY 1;

  DBMS_OUTPUT.put_line ('l_array.count = ' || l_array.COUNT);
  DBMS_OUTPUT.put_line ('l_array(2) = ' || l_array (2));
END;

输出:

l_array.count = 4
l_array(2) = B

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读