【发布时间】:2018-09-16 03:19:30
【问题描述】:
我需要从逗号分隔的字符串中提取前两个值并使用regexp_substr 函数存储在一个数组变量中。
字符串看起来像'aaa,bbb,ccc,ddd,eee'。
我需要 'aaa' 和 'bbb' 存储到一个数组(嵌套表)中。
请帮助如何实现这一点。
【问题讨论】:
我需要从逗号分隔的字符串中提取前两个值并使用regexp_substr 函数存储在一个数组变量中。
字符串看起来像'aaa,bbb,ccc,ddd,eee'。
我需要 'aaa' 和 'bbb' 存储到一个数组(嵌套表)中。
请帮助如何实现这一点。
【问题讨论】:
可能是这样的吧?
DECLARE
TYPE dtype IS TABLE OF VARCHAR2(10);
x dtype := dtype();
s VARCHAR2(100) := 'aaa,bbb,ccc,ddd,eee';
BEGIN
x.extend(2);
x(1) := REGEXP_SUBSTR(s,'[^,]+', 1,1) ;
x(2) := REGEXP_SUBSTR(s,'[^,]+', 1,2) ;
DBMS_OUTPUT.PUT_LINE(x(1));
DBMS_OUTPUT.PUT_LINE(x(2));
END;
/
aaa
bbb
【讨论】:
CREATE TABLE Table1
(name varchar(23))
;
INSERT INTO Table1
(name)
VALUES
('aaa,bbb,ccc,ddd,eee')
;
SELECT SUBSTR(name, 1, Instr(name, ',', 1, 1) -1) AS part1,
SUBSTR(name, Instr(name, ',') + 1,
Instr(name, ',', 1, 2) - Instr(name, ',') - 1) AS part_2
FROM Table1
输出
PART1 PART_2
aaa bbb
现场演示
【讨论】: