Как извлечь часть имени файла? - PullRequest
0 голосов
/ 13 июня 2019

У меня есть имя файла 415-11-CV-21654-CBB-20190228-0-transactions.csv. Я хочу иметь 11-CV-21654-CBB из названия выше. Как мне сделать это с помощью регулярного выражения в запросе SQL

Ответы [ 2 ]

0 голосов
/ 13 июня 2019

Вот один метод, использующий regexp_replace():

select regexp_replace(fname, '^[^-]+-([^-]+-[^-]+-[^-]+-[^-]+).*$', '\1')
from (select '415-11-CV-21654-CBB-20190228-0-transactions.csv' as fname from dual) x
0 голосов
/ 13 июня 2019

Один из вариантов будет

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

, чтобы извлечь часть до текущего года с префиксом дефиса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...