使用RegEx拆分字符串

时间:2013-09-06 12:14:36

标签: sql oracle plsql

以下字符串中包含一些变量:

sText := '%CUSTOMER_LASTNAME%%CUSTOMER_PRENAME% - LANG: %LANGUAGE%'

我创建了一个自定义SPLIT_STRING函数,并希望获取String中的每个变量:

sStr := SPLIT_STRING(sText,'%');

我现在得到的是:

  • CUSTOMER_LASTNAME
  • CUSTOMER_PRENAME,
  • ' - Lang':
  • 语言

我需要什么:

  • CUSTOMER_LASTNAME
  • CUSTOMER_PRENAME
  • 语言

我可以使用RegExp执行拆分字符串或如何执行此操作吗?

TIA frgtv10

1 个答案:

答案 0 :(得分:2)

  

我可以使用RegExp

执行拆分字符串

是的,你可以。这是一个如何完成它的例子。

    SQL> with t1(col) as(
      2    select '%CUSTOMER_LASTNAME%%CUSTOMER_PRENAME%- LANG: %LANGUAGE%' from dual
      3  )
      4  , ocrs as(
      5     select level as ocr
      6       from ( select max(regexp_count(col, '%[^%]+%')) mxo
      7                from t1
      8             ) s
      9     connect by level <= s.mxo
     10  )
     11  select ltrim(rtrim(regexp_substr(col, '%[^%]+%', 1, o.ocr), '%'), '%') as res
     12    from t1
     13    cross join ocrs o
     14  ;

Result:

    RES
    --------------------
    CUSTOMER_LASTNAME
    CUSTOMER_PRENAME
    LANGUAGE

SQLFiddle Demo