PostgreSQL搜索数组的所有索引

时间:2013-09-26 17:51:36

标签: php sql arrays postgresql

在我的表'产品'中,我有一个名为'keywords'的列。

它的定义如下:

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

列类别中的记录可能如下所示:

{music,rock,mp3,nirvana}

我正在尝试在我的网站上实现ajax搜索功能,在每个按键上都会调用搜索功能。

如果用户正在写“m”,我希望它能够查询数据库并检索“keywords”列的数组包含类似内容的行。

这是我现在正在使用的查询:

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

问题在于,使用此查询只搜索关键字[]的第一个索引。

从上一个例子开始:

{music,rock,mp3,nirvana}

它只搜索第一个索引,即“音乐”,它不搜索整个数组。

如何查询此数组以搜索FULL ARRAY?

谢谢!

2 个答案:

答案 0 :(得分:1)

尝试类似:

SELECT * FROM products WHERE ANY(keywords) SIMILAR TO $queryString

答案 1 :(得分:1)

根据此处http://www.postgresql.org/docs/9.1/static/arrays.html

上的阵列文档

您可以使用ANYALL

查询数组字段
SELECT * FROM products WHERE ANY(keywords) SIMILAR TO $queryString