我有一个名为"RAM_ESH_BABU_SAR"
的字符串。
我的要求是从第一个字符到第二个下划线,即RAM_ESH
获取值,并且还从输入字符串SAR
获取最后一个下划线之后的值。
请建议我查询。我试过以下代码。
SELECT
REGEXP_SUBSTR( 'RAM_ESH_BABU_SAR', '[^_]+', 1, 2 )
FROM
dual
答案 0 :(得分:0)
您需要使用源字符串中第二个和第三个下划线的位置,因此我建议在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)
PART1 | PART2 :------ | :---- RAM_ESH | SAR
dbfiddle here