Нечто подобное может быть тем, что вы хотите:
SELECT …
FROM atable
WHERE zip = @zip
UNION ALL
SELECT …
FROM atable
WHERE NOT EXISTS (
SELECT *
FROM atable
WHERE zip = @zip
)
AND zip LIKE CONCAT(LEFT(@zip, 3), '%')
Возможно, это не самое эффективное решение, но, по крайней мере, это один запрос, поэтому он вполне может стать отправной точкой.