【问题标题】:Match String to Array of Strings in Postgres Database Column将字符串与 Postgres 数据库列中的字符串数组匹配
【发布时间】:2013-06-08 23:36:11
【问题描述】:

我有一个使用 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_titles,其中 pub_tag 数组包含字符串“men”。我想语法会是这样的:

 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 使用 PostgreSQL!
  • “引发语法错误”。 始终显示准确的错误消息,最好显示 PostgreSQL 版本。

标签: sql django postgresql


【解决方案1】:

从 postgres documentation 看起来语法可能是

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-25
    • 1970-01-01
    • 1970-01-01
    • 2021-04-28
    • 2019-07-18
    • 1970-01-01
    相关资源
    最近更新 更多