用SQL动态替换oracle字段中的数据

用SQL动态替换oracle字段中的数据,sql,oracle,plsql,Sql,Oracle,Plsql,我有一个varchar列test_数据,在表temp_table1中有csv格式的数据。 示例数据> ,1,2,3, ,14,18, ,3,4, 对于每个数字,都有一个映射字符串,如另一个上的1=“ABC”、2=“XYX”、3=“PQR” 数据库映射表temp_表2 是否有任何方法可以通过使用 单sql查询 例如:**,1,2,3**,as**ABC,XYZ,PQR** 我尝试过使用decode、regexp\u replace,但找不到解决方案 数据库:Oracle11g。有一种方法可以做到

我有一个varchar列test_数据,在表temp_table1中有csv格式的数据。 示例数据>

,1,2,3,
,14,18,
,3,4,
对于每个数字,都有一个映射字符串,如另一个上的1=“ABC”、2=“XYX”、3=“PQR” 数据库映射表temp_表2

是否有任何方法可以通过使用 单sql查询

例如:
**,1,2,3**,as**ABC,XYZ,PQR**

我尝试过使用decode、regexp\u replace,但找不到解决方案


数据库:Oracle11g。

有一种方法可以做到这一点,尽管有点恶心。如果可以控制的话,您真的应该使用连接表并修复数据库结构

方法是使用低效的联接来扩展数据,然后使用
listag()
将结果重新组合在一起。结果是这样的:

select td.id, listagg(tt.val, ',') within group (order by td.id)
from test_data td left join
     temp_table2 tt
     on td.col like '%,' || tt.col || '%,'
group by td.id;

不要在单个列中存储逗号分隔的值。规范化您的模型,您的问题将简化为一个简单(且高效)的
JOIN
操作。@horse\u没有名称,但此字段在许多地方以这种方式使用。是否有任何方法可以通过使用SQL进行替换?可能重复的