我有一个以逗号分隔的列表作为 PL/SQL 过程中的字符串。我需要
- 删除重复项
- 将列表放入数组中。
我发现了多种方法可以做到其中之一,但不能同时做到两者。
有什么帮助吗?
有一个众所周知的 SQL 技巧可以将逗号分隔的列表转换为行。只需使用这个技巧,添加一个DISTINCT
关键字,以及BULK COLLECT
将结果放入您的数组中(我假设您的意思是集合)。
DECLARE
p_test_string VARCHAR2 (4000) := 'A,B,C,B,B,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,
'[^,]+',
1,
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;
Output:
l_array.count = 4
l_array(2) = B
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)