Удалить строку, начиная с любого месяца, в oracle sql - PullRequest
0 голосов
/ 15 января 2020

У меня есть ниже Oracle sql запрос, который мне нужно изменить:

    Select (SUBSTR(long_comp_name, 1, 23)) 
    Kontrakt_Bezeichnung, long_comp_name
    FROM TRT_AGG 
    where ROOT = 'SP';

Результат запроса, как показано ниже:

Kontrakt_Bezeichnung                   long_comp_name
    SP Plus Corp                       SP Plus Corp
    SP Plus Corp                       SP Plus Corp 
    SP Plus Corp                       SP Plus Corp
    SP Plus Corp                       SP Plus Corp
    S&P 500 FUTR OPTN Jun20            S&P 500 FUTR OPTN Jun20P 4275
    S&P 500 FUTR OPTN Jun20            S&P 500 FUTR OPTN Jun20P 4275
    S&P 500 FUTR OPTN Jun20            S&P 500 FUTR OPTN Jun20P 4275
    S&P 500 FUTR OPTN Jun20            S&P 500 FUTR OPTN Jun20C 4275

Теперь я хочу измените мой запрос так, чтобы он вырезал дальнейшую часть значений из строки, которая начинается с любого месяца. Например, в приведенном выше примере он вырезает эту полную часть из «Jun20». Для другого значения оно должно оставаться прежним.

Я хочу получить результат, подобный приведенному ниже:

Kontrakt_Bezeichnung
        SP Plus Corp 
        SP Plus Corp 
        SP Plus Corp 
        SP Plus Corp 
        S&P 500 FUTR OPTN 
        S&P 500 FUTR OPTN 
        S&P 500 FUTR OPTN 
        S&P 500 FUTR OPTN 

Я использую это поле запроса в Oracle Просмотреть, поэтому по этой причине не могу использовать With Clause в запросе на выбор

1 Ответ

2 голосов
/ 15 января 2020

Думаю, вы ищете что-то вроде:

    with d as (
    select     'SP Plus Corp OPTION' n1 from dual
    union all select 'S+P 500 FUTR OPTN Jun20 OPTION' from dual)
select n1, regexp_replace(n1,'(Jan|Feb|Mar|Apr|May|Jun)[0-9]{2}.*','') from d 
...