2013-06-13 66 views
1

我想过滤课程是由学生采取的,我的数据是这样的。拆分PostgreSQL查询过滤

select * from course; 

并显示数据这样

 
+----+-------+----------+-------+ 
| id | name | idcourse | status| 
+----+-------+----------+-------+ 
| 1 | Udin | 1, 5, 8 | OK | 
| 2 | Udin | 2, 4, 1 | OK | 
| 3 | Mamat | 1, 8 | OK | 
+----+-------+----------+-------+ 

如何执行查询? 例如

select * from course where idcourse=8; 

,并会显示记录1和3

+3

为什么你把idcourse在学生表?为什么不使用链接学生和课程的链接表? – Terry

+3

如果它位于您的控制范围内(即,如果您有权访问数据库模型),解决此问题的最佳方法是将课程ID保存在单独的表中,每个学生每条记录一行,然后使用JOIN。 – davek

+0

idcourse专栏的类型是什么? VARCHAR? –

回答

2
select * 
from course 
where '8' = any (string_to_array(replace(idcourse,' ',''), ',')) 
+0

感谢兄弟,它的工作 – yusronnube

+0

@a_horse_with_no_name:你能告诉我8.1版本中是否支持'any'功能吗? –

+0

@AashMaharoon:不知道。 8.1是非常古老的,并没有得到多年的支持。你不应该使用它。现在更新为9.x ** ** –