3

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

しかし、何をしようとしても、ここで何も動作しません。

4

1 に答える 1

9

postgresのドキュメントから、構文は次のようになります

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

于 2013-06-12T18:26:42.403 に答える