OpenRefine (formerly Google-Refine).
This free and open-source tool is awesome for cleaning up messy data. I typically use it for fairly simple operations like concatenation, trimming, replacing one character with another, removing spelling mistakes, etc.
One of my most common use cases is grouping similar items via the clustering tools. This is great for finding spelling mistakes or abbreviation problems (e.g. Road, road, rode, rd, rd.) and changing them all to a single correct value.
Having clean data makes database operations and definition queries MUCH simpler to perform. You can even "record" the operations you've performed on a set of data for reuse on the next bit of messy data you encounter.
I don't use anywhere near the full potential of this software, but I find it easy to pick up and use for the simple tasks I've described.
Here are some screencasts that touch on some of the more advanced operations. Oh yeah, you can also use it for geocoding!
The project has moved from HERE to GitHub.
Here's what the ReadMe says:
OpenRefine is a power tool that allows you to load data, understand
it, clean it up, reconcile it internally, and augment it with data
coming from Freebase or other web sources. All with the comfort and
privacy of your own computer.
The wiki has everything you need to know including download links.