将字符串匹配到Postgres数据库列中的字符串数组

时间:2013-06-12 18:22:32

标签: sql django postgresql

我有一个使用Postgres数据库的Django应用程序。我通过执行以下操作创建临时表:

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.

对于最后一步,我想从temp_table获取pub_titles,在pub_tags列中,与我输入的字符串匹配。

例如,我想得到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.html,和 http://www.postgresql.org/docs/current/interactive/functions-comparisons.html#AEN18030

但无论我尝试什么,我都无法在这里工作。

1 个答案:

答案 0 :(得分:7)

来自postgres documentation

看起来语法可能是

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