Как извлечь дату из строки в SQL оракула 9i - PullRequest
0 голосов
/ 28 мая 2019

У меня есть столбец Объяснение (VARCHAR2) в таблице:

No| Explanation  
1 | Shipment of cabbage by agreement 29.04.2019 TAX Free  
2 | Payment for screws (01.04.19) Tax: 13.55 %  
3 | For reserch by deal dated 01.01.2015 Tax free  
4 | Tax payment for the may 2019 

Мне нужен запрос, который ответит "Есть ли в записи дата в какой-либо форме?" Да / Нет для каждой записи. Возможно ли это на Oracle 9i?

Я попробовал некоторые решения. Но столкнемся с вопросом:

"ORA-01858: не числовой символ был найден там, где ожидалось числовое значение".

Я не знаю, где сейчас будет дата.

select to_char(to_date(EXPLANATION, 'DD.MM.YYYY')) from PAYMENTDOC

1 Ответ

0 голосов
/ 28 мая 2019

Вы можете сделать это с помощью регулярного выражения. Попробуйте следующий код:

  select No, Explanation, 
  case when regexp_instr(Explanation,'\d{2}.\d{2}.\d{2}')!=1 then 
              'Y'
              when regexp_instr(Explanation,'\d{2}.\d{2}.\d{4}')!=1 then
              'Y'
              when REGEXP_instr(Explanation, '(January|February|March|April|May|June|July|August|September|October|November|December) [0-9]{4}')!=1 then
              'Y'
             END Does_entry_have_a_date_in_some_form_in_it
  from table_name;

Выход:

No| Explanation                                          | Does_entry_have_a_date_in_some_form_in_it
1 | Shipment of cabbage by agreement 29.04.2019 TAX Free | Y
2 | Payment for screws (01.04.19) Tax: 13.55 %           | Y
3 | For reserch by deal dated 01.01.2015 Tax free        | Y
4 | Tax payment for the may 2019                         | Y
...