【SQL】oracel数据表table1中的某列的值由逗号分隔的数据构成,该数据是table2的主键,table2(id, name), 请输出table1的值对应table2.name(逗号分隔)

1、背景

oracel数据表table1中的某列的值由逗号分隔的数据构成,该数据是table2的主键,table2(id, name),
请输出table1的值对应table2.name(逗号分隔)

2、解决方案

在 Oracle 数据库中,可以使用以下 SQL 语句来实现将 table1 中某列由逗号分隔的值对应到 table2name(逗号分隔):

SELECT t1.id,
       (SELECT LISTAGG(t2.name, ',') WITHIN GROUP (ORDER BY t2.name)
        FROM table2 t2
        WHERE REGEXP_LIKE(t1.comma_separated_column, '(^|,)' || t2.id || '(,|$)')) AS names
FROM table1 t1;

上述 SQL 语句假设 table1 中有一个 id 列和一个包含逗号分隔数据的列(假设为 comma_separated_column)。它使用关联子查询和正则表达式来判断 table2id 是否在 table1 的逗号分隔列中,如果在,则将对应的 name 提取出来,并使用 LISTAGG 函数将这些 name 以逗号分隔的形式组合起来。

请注意,你需要根据实际的表结构和列名来调整上述 SQL 语句中的表名和列名。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值