我有一个文件名 415-11-CV-21654-CBB-20190228-0-transactions.csv。 我想从上面的名称中获得11-CV-21654-CBB。如何在SQL查询中使用正则表达式
答案 0 :(得分:0)
一个选项是
with t(str) as
(
select '415-11-CV-21654-CBB-20190228-0-transactions.csv' from dual
)
select substr(str,1,instr(str,to_char(sysdate,'-yyyy')) - 1 )
as "Result String"
from t;
Result String
-------------------
415-11-CV-21654-CBB
或另一个:
with t(str,year) as
(
select '415-11-CV-21654-CBB-20190228-0-transactions.csv', to_char(sysdate,'yyyy')
from dual
)
select rtrim(regexp_substr(str,'(*.)+'||year),'-'||year)
as "Result String"
from t
Result String
-------------------
415-11-CV-21654-CBB
提取带有连字符前缀的当前年份部分。
答案 1 :(得分:0)
这是使用regexp_replace()
的一种方法:
select regexp_replace(fname, '^[^-]+-([^-]+-[^-]+-[^-]+-[^-]+).*$', '\1')
from (select '415-11-CV-21654-CBB-20190228-0-transactions.csv' as fname from dual) x