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

问题是这个查询只搜索关键字[] 的第一个索引。

所以从我之前的例子:

{music,rock,mp3,nirvana}

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

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

谢谢!

4

2 回答 2

1

根据此处找到的数组文档 http://www.postgresql.org/docs/9.1/static/arrays.html

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

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

尝试类似:

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