Ahhh, good point, Steve, I could have at least checked isnumeric:
if isnumeric(left({Customer.Address1},instr({Customer.Address1}," "

)) then
mid({Customer.Address1},instr({Customer.Address1}," "

+1)
else
{Customer.Address1}
I tend to avoid using variables because they destroy pass through SQL, so I just don't use them anywhere anymore unless required (looping, etc.).
BTW, that's far from foolproof, addresses such as 49A Main Street would not get stripped.
The best solution is to use software to parse the address into each component, the next would be to write some lengthy code to perform numerous checks, including your isnumeric, failing that, check for anything within the first part that is numeric, and that there's logical information after that part (contains St., Rd., Street, Road, etc.). Also there's usually more than one address line in a database, so getting software that reads the addresses and then writes (to different fields so as not to destroy the integrity) the USPS standardized address information, as well as being able to parse into different components is very ijmportant, especially when trying to dedupe a large mailing list (mailings can be VERY expensive).
I wrote a very comprehensive Fox program in the late 80's to accomplish this as the market software was weak and very expensive. To get very accurate information I had lookup tables and ever increasing exceptions.
-k
kai@informeddatadecisions.com