Можете лесно да промените логиката си, за да се справите с това, като добавите интервал към низа, преди да търсите интервал:
select substr(b.x_ids, 1, instr(b.x_ids || ' ', ' ', 1, 1) - 1)
from lookup_tab a join
external_tab b
on a.site_id = B.SITE_ID and a.zone_id = b.zone_id