【问题标题】:Split String with RegExp [duplicate]使用 RegExp 拆分字符串 [重复]
【发布时间】:2013-09-06 12:14:36
【问题描述】:

下面的字符串里面有一些变量:

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

我做了一个自定义的 SPLIT_STRING 函数,想获取字符串中的每个变量:

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

我现在在循环中得到的是:

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

我需要什么:

  • CUSTOMER_LASTNAME
  • CUSTOMER_PRENAME
  • 语言

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

TIA frgtv10

【问题讨论】:

    标签: sql oracle plsql


    【解决方案1】:

    我可以使用 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

    【讨论】:

    • 哇,这对我来说有点奇怪。是否可以将其放入函数中?我真的需要 SELECT FROM DUAL 部分来执行此操作吗?
    • 哇.. 我需要特别是正则表达式的认证 :)
    • @frgtv10 with 子句只是用来表示您提供的数据样本 - (简单地说,某种表格替换)。
    • 这行得通,但是如何把它放在一个函数中使用它可能就像SPLIT_STRING 函数一样?
    • @ajmalmhd04 大声笑,也许 SO 可以开始提供认证。在那之前,这里有一些 fun reading 让你继续前进。
    猜你喜欢
    • 2018-06-13
    • 2020-01-07
    • 1970-01-01
    • 1970-01-01
    • 2010-11-03
    • 1970-01-01
    • 2017-06-30
    • 1970-01-01
    • 2017-07-22
    相关资源
    最近更新 更多