Postgres - 像任何上层()

时间:2017-10-05 18:58:42

标签: postgresql case

有没有办法使用UPPER和LIKE ANY()?

我有以下示例:

SELECT
....
where skus.number like any ('{"%00130204%", "%00130202"}')

不幸的是,我在这里检查的skus可能是不同的情况,所以我尝试这样做:

SELECT
....
where UPPER(skus.number) like any UPPER('{"%00130204%", "%00130202"}'))

哪个不起作用,有没有办法让这个在查询本身工作?

2 个答案:

答案 0 :(得分:2)

无需使用鞋面。请使用不区分大小写的like,“ilike”。

 SELECT
 ....
 where skus.number ilike any ('{"%00130204%", "%00130202"}')

答案 1 :(得分:0)

除了完全与@Joe在他的答案上更好地为你查询(并跳过想法背后的哲学以大写字母表示数字),我决定回答你的帖子主题

  

有没有办法使用UPPER和LIKE ANY()?

是的 - 这是:

t=# select UPPER('110013020411') like any (UPPER('{"%00130204%", "%00130202"}')::text[]) comaprison;
 comaprison
------------
 t
(1 row)

在数组中的上部文本表示为文本后,您需要将其强制转换为与ANY (array)一起使用