这个问题在这里已有答案:
我正在尝试用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”,因为数组中存在一个值?
'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'