如何从逗号分隔的字符串中提取前两个值

时间:2018-04-06 06:47:57

标签: sql oracle plsql

我需要从逗号分隔的字符串中提取前两个值,并使用regexp_substr函数存储在数组变量中。

字符串看起来像'aaa,bbb,ccc,ddd,eee'

我需要'aaa'和'bbb'存储到数组中(嵌套表)。

请帮助解决如何实现这一目标。

2 个答案:

答案 0 :(得分:2)

这样的事,也许?

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

答案 1 :(得分:1)

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

现场演示

  

http://sqlfiddle.com/#!4/2840fd/31