Сопоставить строку с массивом строк в столбце базы данных Postgres

2

У меня есть приложение Django, которое использует базу данных Postgres. Я создаю временную таблицу, выполняя следующие действия:

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

Обратите внимание, что последний столбец (pub_tags) temp_table содержит массив строк.

Для справки моя следующая строка кода вставляет данные из существующих таблиц в таблицу temp и отлично работает.

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

На последнем шаге я хотел бы получить pub_titles из temp_table, где в столбце 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

но независимо от того, что я пытаюсь, я не могу заставить ничего работать здесь.

  • 0
    +1 за использование PostgreSQL!
  • 0
    msgstr "выдает синтаксическую ошибку". Всегда показывайте точное сообщение об ошибке и желательно версию PostgreSQL.
Теги:

1 ответ

7
Лучший ответ

из документации postgres похоже, что синтаксис может быть

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

  • 0
    идеально. благодарю вас.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню