I have an address field in a table. The data looks something like this:

1246 W 187th PL, Gardena, CA

I need to take this data, break it up into 5 seperate fields:

street adress, city, state, zip & extended zip.

The data in the existing field is seperated by commas. None of the data is mandatory, so sometimes it's there and sometimes it's not. Can somebody help me parse this thing.
I'm using C, Pro*C & PL/SQL. Any help would be appreciated.

Thanx,
Khurram.