I have column Explanation (VARCHAR2) in table:
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
I need query thats will answer “Does entry have a date in some form in it?” Yes / No for each entry. Is it possible on Oracle 9i?
I tried some solutions. But run into issue:
“ORA-01858: a non-numeric character was found where a numeric was expected”.
I don’t clearly now where datestamp will be in field.
select to_char(to_date(EXPLANATION, 'DD.MM.YYYY')) from PAYMENTDOC
Advertisement
Answer
You can do this using regular expression. Try below code :
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;
Output :
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