现在我有一个关键字数组,如: ['key1','key2','key3'.......],关键字可以是数字或字符。
如果我想在我的表(postgres数据库)中搜索,并发现所有记录包含该数组中的任何关键字,我该怎么做?
例如: 我有一个表有一个名为name的列和一个名为description
的列我需要查找名称或描述中包含该数组中任何关键字的所有记录。
感谢
答案 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%'])