I'm sure there are cleverer ways, but I usually resort to a simple but untidy method.
For each table, create a query containing all the fields you want + another field which is the first 5 characters. For example if you have a field called 'name' you could create a field called 'name5' in a query ie. "name5: Left([name],5)"
Then create a third query which joins the two querys using the new fields.
Its a bit untidy as you end up with three queries to do the job. But its easy and quick.
You also mentioned numbers. If your numbers are just numbers stored as text, then this will be fine. If you really mean numbers, then you have to decide how you want rationalise them. such as first five significant figures or rounded etc. and then create suitable functions to do that in your query.