sql - Postgres数组大小写问题

标签 sql arrays postgresql

<分区>

我正在尝试使用 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

关于sql - Postgres数组大小写问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52388393/

相关文章:

python - cursor.rowfactory (cx_oracle) 如何以字典格式返回每一行?

php - 插入查询缺少的列

java - 使用 Apache ANT 通过 plpgsql 函数以编程方式执行 sql 脚本失败

sql - 简单的距离查询不起作用

mysql - SQL 在同一个表上使用 JOIN 更新行

sql - 查询的 Django 回溯

javascript - 遍历数组以使用 d3 追加圆圈

javascript - 在 JavaScript 中添加和显示随机对象数组中的视频

postgresql - Evolutions 说我的 SQL 有语法错误

postgresql - Postgres : missing or erroneous pg_hba. 配置文件