Sql 从单列中的键列表中选择行

Sql 从单列中的键列表中选择行,sql,oracle,key,Sql,Oracle,Key,我必须在一个数据库系统中进行研究,其中1:n关系的外键以逗号分隔列表的形式存储在一列中。我想做一个查询,打印出表a中的每一行,其中主键位于表B的某一列中,但我不知道怎么做。所使用的数据库是oracle 10(如果有帮助的话) 一种非常粗糙、低效但简单的方法: select ... from a, b where instr(','||b.csvcol||',', ','||a.pk||',') > 0; 您想使用INSTR函数 Select A.* FROM Foo A Where A.

我必须在一个数据库系统中进行研究,其中1:n关系的外键以逗号分隔列表的形式存储在一列中。我想做一个查询,打印出表a中的每一行,其中主键位于表B的某一列中,但我不知道怎么做。所使用的数据库是oracle 10(如果有帮助的话)

一种非常粗糙、低效但简单的方法:

select ... from a, b
where instr(','||b.csvcol||',', ','||a.pk||',') > 0;

您想使用INSTR函数

Select A.*
FROM Foo A
Where A.ID IN 
  (SELECT A.ID FROM Bar B 
   Where INSTR(','||B.ConcatKeyField||',', ','||A.ID||`,', 1, 1) > 0)