【问题标题】:How extract first two values from a comma separated string如何从逗号分隔的字符串中提取前两个值
【发布时间】:2018-09-16 03:19:30
【问题描述】:

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

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

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

请帮助如何实现这一点。

【问题讨论】:

    标签: sql oracle plsql


    【解决方案1】:

    可能是这样的吧?

    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
    

    【讨论】:

      【解决方案2】:
      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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多