替换要删除的前缀,然后找到第一个和第二个下划线的索引,然后找到这两个分隔符之间的子字符串:
Oracle 设置:
CREATE TABLE your_table ( value ) AS
SELECT 'DUM_EI_AO_L_5864_Al Meena Tower' FROM DUAL UNION ALL
SELECT 'EI_AE_L_5864_Al radha Tower' FROM DUAL
查询:
SELECT value,
SUBSTR( replaced_value, first_separator + 1, second_separator - first_separator - 1 )
AS second_term
FROM (
SELECT value,
replaced_value,
INSTR( replaced_value, '_', 1, 1 ) AS first_separator,
INSTR( replaced_value, '_', 1, 2 ) AS second_separator
FROM (
SELECT value,
REPLACE(
REPLACE(
value,
'PRJ_'
),
'DUM_'
) AS replaced_value
FROM your_table
)
)
输出:
价值 |第二期
:-------------------------------- | :----------
DUM_EI_AO_L_5864_Al Meena 塔 | AO
EI_AE_L_5864_Al radha 塔 | AE
查询 2:
你也可以使用正则表达式:
SELECT value,
REGEXP_SUBSTR( value, '(DUM_|PRJ_)?.*?_(.*?)_', 1, 1, NULL, 2 ) AS second_term
FROM your_table
输出:
价值 |第二期
:-------------------------------- | :----------
DUM_EI_AO_L_5864_Al Meena 塔 | AO
EI_AE_L_5864_Al radha 塔 | AE
db小提琴here