我正在尝试使用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的新手,以前从未使用过数组函数。但是在上面的查询中,由于数组中存在一个值,因此结果不应该“找到”吗?
答案 0 :(得分:2)
'1114156957' <> ANY(..)
的意思是:“'1114156957'不等于数组中的任何个值。或者换句话说:“不等于至少一个数组中的元素”。
由于存在一个确实不相等的值,因此条件'1114156957' <> ANY(npi)
为true。
如果要检查数组中是否根本不包含任何元素,则需要使用<> 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'