1、背景
oracel数据表table1中的某列的值由逗号分隔的数据构成,该数据是table2的主键,table2(id, name),
请输出table1的值对应table2.name(逗号分隔)
2、解决方案
在 Oracle 数据库中,可以使用以下 SQL 语句来实现将 table1
中某列由逗号分隔的值对应到 table2
的 name
(逗号分隔):
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
)。它使用关联子查询和正则表达式来判断 table2
的 id
是否在 table1
的逗号分隔列中,如果在,则将对应的 name
提取出来,并使用 LISTAGG
函数将这些 name
以逗号分隔的形式组合起来。
请注意,你需要根据实际的表结构和列名来调整上述 SQL 语句中的表名和列名。