如何在 PostgreSQL 查询中按数组值搜索

伊戈尔·T。

我有一个数组:ARRAY['one','mon','uuuu','wed','thu','fri','qwer']并查询:

select * from table t where t.name like ARRAY[i]

如何使用 ARRAY 值迭代查询并将结果保存到某些输出中?

我的意思是得到以下结果:

select * from table t where t.name like 'one'
select * from table t where t.name like 'mon'
select * from table t where t.name like 'uuuu'
...
select * from table t where t.name like 'qwer'

并将它们保存到例如输出中

吉姆·琼斯

一种选择是unnest在子查询中使用数组或CTE应用您想要的表达式,例如

CREATE TEMPORARY TABLE t (name text);
INSERT INTO t VALUES ('mon'),('qwer'),('mon'),('xpto');

WITH j (val) AS (
 SELECT UNNEST(ARRAY['one','mon','uuuu','wed','thu','fri','qwer'])
) SELECT * FROM j,t WHERE t.name LIKE j.val;

 val  | name 
------+------
 mon  | mon
 mon  | mon
 qwer | qwer
(3 Zeilen)

如果您需要%在您的 中使用LIKE,只需将其连接到字符串||,例如

WITH j (val) AS (
 SELECT UNNEST(ARRAY['one','mon','uuuu','wed','thu','fri','qwer'])
) SELECT * FROM j,t WHERE t.name LIKE '%' || j.val || '%';

或者使用ANY运算符

SELECT * FROM t 
WHERE name LIKE ANY(ARRAY['one','mon','uuuu','wed','thu','fri','qwer']);
 name 
------
 mon
 qwer
 mon
(3 Zeilen)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章