Absolutely ! It seems that the mandatory postcode field has all kinds of non-postcode stuff in it !
For anyone else with this issue the original error was: Invalid length parameter -2 to SUBSTRING. Negative integers are not allowed. Changing the query to SELECT DISTINCT left(c.addr_5, CHAR_LENGTH(c.addr_5)-3) as trimmed FROM vecusts c where CHAR_LENGTH(c.addr_5) > 3 solves this issue and now only leaves what is left to be validated. Thank you Helen J
