2013-06-13 130 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 ** ** –