通过一组关键字在postgres中搜索的最佳方式

时间:2013-07-17 19:20:13

标签: postgresql

现在我有一个关键字数组,如: ['key1','key2','key3'.......],关键字可以是数字或字符。

如果我想在我的表(postgres数据库)中搜索,并发现所有记录包含该数组中的任何关键字,我该怎么做?

例如: 我有一个表有一个名为name的列和一个名为description

的列

我需要查找名称或描述中包含该数组中任何关键字的所有记录。

感谢

2 个答案:

答案 0 :(得分:3)

也许这个例子很有用:

CREATE TABLE TEST(
  FIELD_KEY TEXT);

INSERT INTO TEST VALUES('this is hello');
INSERT INTO TEST VALUES('hello');
INSERT INTO TEST VALUES('this');
INSERT INTO TEST VALUES('other message');

SELECT *
FROM TEST
WHERE FIELD_KEY LIKE ANY (array['%this%', '%hel%']);

这将返回:

this is hello
hello
this

这里是另一个例子:

SELECT *
FROM TEST
WHERE FIELD_KEY ~* 'this|HEL';

〜*不区分大小写,〜区分大小写

您可以尝试此示例 here

答案 1 :(得分:2)

select *
from t
where
    array[name] <@ my_array
    or array[description] <@ my_array

like运算符与any子查询表达式结合在一起:

select *
from t
where name like any (values ('%John%'), ('%Mary%'))

或数组语法:

where name like any (array['%John%', '%Mary%'])