You might want to leverage tools specifically designed for parsing and cleaning data. Trying to do this via sql would be very difficult especially if there is no consistency. Also this is a microsoft sql server forum though some might help
I have a work around which I am looking into.I have a table that has derived city,State and Zip columns from the address column however it is based on event column called "in" and "out" for ids
So for one 1 id there will be 2 rows having all columns based on the event column value in and out
Example.
Id. "Address" city. State. Zip. Event
4 drive rd phoix Arizona 34445. Phoneix. Ar. 34445. IN
5 drive rd almx Missiippi 34445. Phoneix. Ar. 34445. Out
Ids are same so have to pick the address based on eventnames