我正在尝试使用 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’不等于数组中的任何值。或者换句话说:“不等于数组中的至少一个元素”。 p>
因为有一个值确实不相等,条件'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