无效数字是因为,你a表定义的是数字,当你in b表的时候,默认需要将b.aid转换为数字,所以报错,因为34,35无法转换为数字。
如果你想用子查询的话最好使用like..
SELECT b.*,(SELECT a.aid from a where b.aid LIKE '%' || a.aid || '%' AND ROWNUM=1)  FROM b 
或者
SELECT b.*,(SELECT wmsys.wm_concat(a.aid) from a where b.aid LIKE '%' || a.aid || '%' )  FROM b