Say your string is in a column called "string_col".
The first four elements can be pulled out with:
select
substr(string_col, 1, pos_1st_pipe - 1),
substr(string_col, pos_1st_pipe + 1, pos_2nd_pipe - pos_1st_pipe - 1),
substr(string_col, pos_2nd_pipe + 1, pos_3rd_pipe - pos_2nd_pipe - 1),
substr(string_col, pos_3rd_pipe + 1, len(string_col) - pos_3rd_pipe - 1)
from
your_table
In the above you need to replace my pseudo variables with a call to instr i.e.
pos_1st_pipe : instr(string_col, '|', 1, 1)
pos_2nd_pipe : instr(string_col, '|', 1, 2)
etc....
Obviously these are all string values. You will probably need to use the TO_DATE function on the date value, though you could try to see if Oracle will cast implicitly from that format.
Techonthenet has
a good basic function guide.
Dave