Teradata中有类似的函数like any
在Postgresql中可用吗?
select * from product
where proc_cd like any ('20','23','05','06','07','08','22')
答案 0 :(得分:2)
您可以使用JOIN
(如果存在_
或%
之类的通配符,则很有用)
SELECT DISTINCT p.*
FROM Product p
JOIN (VALUES ('20'),('23'),('05'),('06'),('07'),('08'),('22')) sub(s)
ON proc_cd like LIKE sub.s;
或者(如果没有通配符):
select * from product
where proc_cd IN ('20','23','05','06','07','08','22');
select * from product
where proc_cd = any (ARRAY['20','23','05','06','07','08','22']);
答案 1 :(得分:2)
据我所知(抱歉,Teradata的官方文档服务器目前已关闭),在Teradata中是这样的:
proc_cd like any ('20','23','05','06','07','08','22')
简写为:
proc_cd like '20' or proc_cd like '23' or proc_cd like '05' ...
PostgreSQL具有更通用的ANY
,可让您说:
expression operator ANY (array expression)
用于任何operator
,例如=
,LIKE
等。因此,您可以将该列表转换为数组,然后说:
proc_cd like any (array['20','23','05','06','07','08','22'])