我有一个具有多值代码列的表,我想将它连接到具有单值代码的查找表。表已经存在,所以只需要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 || ',%';
不过,我建议您修复数据模型,这样您就有了一个每个key
和code
有一行的表。