我有一个数组: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] 删除。
我来说两句