Oracle将多个值连接到一个值

时间:2013-07-12 10:25:33

标签: sql oracle

我正在尝试在两个表之间连接在一个列上有一个值,另一个列有多个值。

For ex. table1 column varieties     table2 Items
        Fruits                      vegetables,spinach,fruits
        Vegetable 
        Spinach

我有什么方法可以像这样加入:

select * from table1 t1 left join table2 t2  on t1.varieties in t2.items

先谢谢

1 个答案:

答案 0 :(得分:3)

听起来你在t1.items列中有一个以逗号分隔的列表。这是糟糕的数据库设计。正确的设计是有一个单独的关联表。

但是,您可以使用like

进行加入
select *
from table1 t1 left join
     table2 t2
     on ','||t1.items||',' like '%,'||t2.varieties||',%'

请注意,这会在列表的开头和结尾添加分隔符,然后搜索由分隔符包围的单词。这可以防止“苹果”匹配“菠萝”。