1

私のテーブル「製品」には、「キーワード」という名前の列があります。

次のように定義されています。

CREATE TABLE products (
    id            integer,
    keywords      character varying[]
    //rest of the definition ommited for clarity
);

列カテゴリのレコードは次のようになります。

{music,rock,mp3,nirvana}

私は自分のウェブサイトに ajax 検索機能を実装しようとしています。キーを押すたびに検索機能が呼び出されます。

ユーザーが「m」と書いている場合、データベースにクエリを実行して、「キーワード」列の配列にそのようなものが含まれている行を取得したいと思います。

現在使用しているクエリは次のとおりです。

SELECT * FROM products WHERE keywords[1] SIMILAR TO $queryString

問題は、このクエリでは、keywords[] の最初のインデックスのみが検索されることです。

だから私の前の例から:

{music,rock,mp3,nirvana}

「music」である最初のインデックスのみを検索し、配列全体を検索しません。

この配列にクエリを実行して FULL ARRAY を検索するにはどうすればよいですか?

ありがとう!

4

2 に答える 2

1

次のようなものを試してください:

SELECT * FROM products WHERE ANY(keywords) SIMILAR TO $queryString
于 2013-09-26T17:57:30.130 に答える
1

ここにある配列に関するドキュメントによると、 http://www.postgresql.org/docs/9.1/static/arrays.html

ANYまたはを使用して配列フィールドを照会できますALL

SELECT * FROM products WHERE ANY(keywords) SIMILAR TO $queryString
于 2013-09-26T17:58:31.453 に答える