У меня есть приложение 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
но независимо от того, что я пытаюсь, я не могу заставить ничего работать здесь.
из документации postgres похоже, что синтаксис может быть
SELECT pub_title FROM temp_table WHERE 'men' = ANY (pub_tags)