Teradata "как любой" для Postgresql - PullRequest
       2

Teradata "как любой" для Postgresql

0 голосов
/ 17 октября 2018

Есть ли аналогичная функция like any, которая доступна в Teradata, доступна в Postgresql?

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

Ответы [ 2 ]

0 голосов
/ 17 октября 2018

Насколько я могу судить (извините, официальный сервер документации 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'])
0 голосов
/ 17 октября 2018

Вы можете использовать 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']);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...