Teradata与PostgreSQL一样

时间:2018-10-17 19:00:15

标签: sql postgresql

Teradata中有类似的函数like any在Postgresql中可用吗?

select * from product
where proc_cd like any ('20','23','05','06','07','08','22')

2 个答案:

答案 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'])