当然这个问题不算问题,可以把他弄成多条数据插入数据库,但是这样会造成数据冗余,所以把一个列的集合数据存成一个字符串放在数据库,但是这样关联查询就有点问题, 不能 用 t1.id in (t2.nod_id) 虽然t2.node_id 是个字符串但是没有用
利用 oracle 10i 提供的方法regex_substr 方法拆分字符串获取长度后,需要t2表中的name 拼成的字符串所以用字查询,然后查询主表的其他字段,关联,
select
t1.node_id,
listagg(t2.node_name,',')within group(order by t2.node_id) as node_name
FROM per_email_sams t1
left join per_node t2 on t2.node_id IN (
SELECT REGEXP_SUBSTR(t1.node_id,'[^,]+', 1, LEVEL) FROM DUAL
CONNECT BY LEVEL <= LENGTH(t1.node_id) - LENGTH(REGEXP_REPLACE(t1.node_id, ',', ''))+1
)