| Oracle FAQ | Your Portal to the Oracle Knowledge Grid | |
Home -> Community -> Usenet -> c.d.o.misc -> Re: Help Extracting Date
nosbush_at_gmail.com wrote:
> I am working with a table that has one of its columns setup to contain
> multiple pieces of data. For example, it contains
> username;entered_date;code1;code2;action_date;etc.... Everything is
> separated by semicolons. I need to get the data out ...
> Grant
Grant,
Here's some disgusting code to go along with your digusting data ;) The query below will TRY to "validate" your embedded fifth value, but depending on how "dirty" the data is it may still give you the ORA-01847 error. For example, a date like '39Jan2003' will get past the regex match and trip it up.
Comments from other posters that the database you have inherited is crappy and unmaintainable are right on. I do understand this is not your doing (and that you have some work to get done).
SELECT mdta AS original_mdta,
/* Parse out 5th value in ;-delimited string
and match it to date pattern */
decode(regexp_instr(substr(mdta,
instr(mdta,';',1,4)+1,
instr(mdta,';',1,5) -
instr(mdta,';',1,4)-1),
'^[0-3]?[0-9][ADFJMNOS][aceopu][bcglnptvy][0-9]?[0-9]?[0-9][0-9]$',
1, 1, 0, 'i'), /* Case-insensitive */
/* Does not match date pattern */
null, to_date(null),
0, to_date(null),
/* Otherwise assume valid ddMonyyyy */
to_date(substr(mdta,
instr(mdta,';',1,4)+1,
instr(mdta,';',1,5) -
instr(mdta,';',1,4)-1),
'ddMonyyyy'))
AS ActionDate,
'More Stuff' AS another_col
Here is the above query "in action" on some test data:
http://otb.alma.com/otb.fcgi?func=btable&server=orcl&user=ALMA&qid=22
Hope that helps.
John Hinsdale Received on Thu Jan 04 2007 - 06:07:20 CST
![]() |
![]() |