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

前端之家收集整理的这篇文章主要介绍了oracle – PL / SQL逗号分隔列表;删除重复并放入数组前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个逗号分隔列表作为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

猜你在找的Oracle相关文章