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

标签 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

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

最佳答案

来自 postgres documentation看起来语法可能是

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

关于sql - 将字符串匹配到 Postgres 数据库列中的字符串数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17072581/

相关文章:

sql - 我可以使用 TRAN&ROLLBACK 进行打印预览吗?

python - 从 Django 管理命令显示任务进度

django - 如何在 Django 中测试 "render to template"函数? (测试驱动)

PHP/PostgreSQL : check if a prepared statement already exists

database - 日期大于 Rails 4 和 Postgres 的地方

sql - 如何使用SQL计算树中值的总和

sql - 加入使用日期字段的最佳方式

node.js - sequelize.js 中的字母数字 ID

php - ajax返回成功但mysql数据库未更新

python - django.core.exceptions.ImproperlyConfigured : Requested setting USE_I18N, 但未配置设置