Postgres数组案例问题[重复]

问题描述 投票:0回答:1

这个问题在这里已有答案:

我正在尝试用PostgreSQL中的数组函数编写一个简单的查询,但它似乎没有正常工作。

WITH vars AS (
  SELECT array['1114156957', '1234'] as npi
)
SELECT CASE 
         when '1114156957' <> ANY(npi) then 'Not Found'
         ELSE 'found'
       End as test
FROM vars;

我是Postgres的新手,之前从未使用过数组函数。但是在上面的查询中,结果不应该是“Found”,因为数组中存在一个值?

sql arrays postgresql
1个回答
2
投票

'1114156957' <> ANY(..)的意思是:“'1114156957'不等于数组中的任何值。或者反之亦然:”不等于数组中的至少一个元素“。

由于有一个值确实不相等,因此条件'1114156957' <> ANY(npi)为真。

如果要检查数组中是否未包含元素,则需要使用<> ALL()

WITH vars(npi) AS (
   values (array['1114156957', '1234'])
)
SELECT CASE 
         when '1114156957' = ALL(npi) then 'Not Found'
         ELSE 'found'
       End as test
FROM vars;

返回'Found'

在线示例:http://rextester.com/UDBNH6876

© www.soinside.com 2019 - 2024. All rights reserved.