Oracle SQL-如何将单个值连接到多值列



我有一个具有多值代码列的表,我想将它连接到具有单值代码的查找表。表已经存在,所以只需要Select语句就可以了。

我的查询,但它只匹配只有1个值的列:

select key, code, desc from <driving table> d 
left join <lookup table> l 
on ',' || d.code || ',' like '%,' || l.code || ',%'

CODE和DESC列为Varchar

例如:

Driving table:
KEY | CODE 
001   1,2
002   1,2,3
003   2 
Lookup table:
CODE | DESC
1     desc 1
2     desc 2
3     desc 3
Resulting output:
KEY | CODE | DESC
001    1     desc 1
001    2     desc 2
002    1     desc 1
002    2     desc 2
002    3     desc 3
003    2     desc 2

您可以非常低效地将like用于此目的:

select d.*, l.*
from driving d join
lookup l
on ',' || l.id || ',' like '%,' || d.code || ',%';

不过,我建议您修复数据模型,这样您就有了一个每个keycode有一行的表。

最新更新