在我的表'产品'中,我有一个名为'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?
谢谢!
答案 0 :(得分:1)
尝试类似:
SELECT * FROM products WHERE ANY(keywords) SIMILAR TO $queryString
答案 1 :(得分:1)
根据此处http://www.postgresql.org/docs/9.1/static/arrays.html
上的阵列文档您可以使用ANY
或ALL
:
SELECT * FROM products WHERE ANY(keywords) SIMILAR TO $queryString