【问题标题】:how to get string value between underscores in oracleoracle如何获取下划线之间的字符串值
【发布时间】:2017-08-08 13:24:18
【问题描述】:

我有一个叫"RAM_ESH_BABU_SAR"的字符串。

我的要求是从第一个字符到第二个下划线(即RAM_ESH)获取值,并从输入字符串(即SAR)获取最后一个下划线之后的值。

请建议我查询。下面的代码我试过了。

SELECT
    REGEXP_SUBSTR( 'RAM_ESH_BABU_SAR', '[^_]+', 1, 2 )
FROM
    dual

【问题讨论】:

    标签: oracle11g


    【解决方案1】:

    您需要处理源字符串中第二个和第三个下划线的位置,因此我建议在 SUBSTR() 中使用 REGEXP_INSTR()。对于第三个下划线之后的字符串,您还需要 LENGTH() 因为您想从结束字符向后工作(即负数的字符作为 SUBSTR() 中的第二个参数。

    SELECT
          substr(x,1,REGEXP_INSTR( x, '[_]+', 1, 2 )-1)         as part1
        , substr(x,REGEXP_INSTR( x, '[_]+', 1, 3 ) - LENGTH(x)) as part2
    FROM
        (select 'RAM_ESH_BABU_SAR' x from dual)
    
    第 1 部分 |第2部分 :-------- | :---- RAM_ESH |特区

    dbfiddle here

    【讨论】:

      猜你喜欢
      • 2019-08-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-02-06
      • 2015-04-01
      • 2011-03-06
      相关资源
      最近更新 更多