Php PostgreSQL搜索数组的所有索引

Php PostgreSQL搜索数组的所有索引,php,sql,arrays,postgresql,Php,Sql,Arrays,Postgresql,在我的表“products”中有一个名为“keywords”的列 它的定义如下: CREATE TABLE products ( id integer, keywords character varying[] //rest of the definition ommited for clarity ); {music,rock,mp3,nirvana} 列类别中的记录可能如下所示: CREATE TABLE products (

在我的表“products”中有一个名为“keywords”的列

它的定义如下:

CREATE TABLE products (
    id            integer,
    keywords      character varying[]
    //rest of the definition ommited for clarity
);
{music,rock,mp3,nirvana}
列类别中的记录可能如下所示:

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
问题是,使用此查询只能搜索关键字[]的第一个索引

因此,从我前面的例子来看:

{music,rock,mp3,nirvana}
它只搜索第一个索引,即“music”,而不搜索整个数组

如何查询此数组以搜索整个数组

谢谢

试试以下方法:

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

根据这里找到的有关阵列的文档

您可以使用
ANY
ALL
查询数组字段:

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

有趣的是,我得到了这个查询的语法错误。错误消息是:查询失败:错误:语法错误位于或接近“ANY”。有什么不对劲吗?