2013-06-12 85 views
2

我有一個使用Postgres數據庫的Django應用程序。我通過執行以下操作創建一個臨時表:將字符串與Postgres數據庫中的字符串數組匹配

cursor.execute("""CREATE TEMP TABLE temp_table (pub_id INTEGER, pub_title TEXT, pub_tags TEXT[])""") 

注意temp_table的最後一列(pub_tags)包含字符串數組。

作爲參考,我的下一行代碼將現有表中的數據插入到臨時表中,並且工作正常。

cursor.execute("""INSERT INTO temp_table(pub_id, pub_title, pub_tags) SELECT...etc. 

對於最後一步,我想從那裏,在pub_tags列,有一個比賽,我進入了一個字符串temp_table得到pub_titles。

例如,我想獲取pub_tag數組中包含字符串「men」的所有pub_titles。我想像的語法會是這樣的:

cursor.execute("""SELECT pub_title FROM temp_table WHERE '%men%' IN (pub_tags)""") 

這是不正確的,並拋出一個語法錯誤,但我希望說明什麼,我試圖做的。我只是不確定如何表明pub_tags是在這種情況下的數組。

我已經提到了一些Postgres的文檔,例如:

http://www.postgresql.org/docs/current/static/functions-array.htmlhttp://www.postgresql.org/docs/current/interactive/functions-comparisons.html#AEN18030

但無論我怎麼努力,我不能得到任何東西在這裏工作。

+0

+1把PostgreSQL! –

+0

「引發語法錯誤」。 **始終顯示確切的錯誤消息**,最好是PostgreSQL版本。 –

回答

7

從Postgres的documentation它看起來像語法可能

SELECT pub_title FROM temp_table WHERE 'men' = ANY (pub_tags)

+0

完美。謝謝。 – jac300