arrays - PostgreSQL:处理数组
问题描述
我在 PostgreSQL 表中有一个列 available_sizes 类型数组:text[]
select available_sizes from products;
{37,38,39,40}
...
有时我需要检查哪些行包含某些值,例如 39 和 40,所以我尝试这样做:
select *
from products
where available_sizes && ('{39, 40}');
返回包含 39 或 40 的行
select *
from products
where available_sizes = ANY ('{41, 42}');
返回错误:“找不到数据类型 text[] 的数组类型”
请问这个怎么解决?抱歉,不是 SQL/PostgreSQL 专家
解决方案
&&
是“重叠”运算符,被描述为“具有共同元素”
您正在寻找的是“包含”运算符@>
,它检查右侧数组的所有元素是否包含在左侧数组中:
select *
from products
where available_sizes @> ('{39, 40}');
推荐阅读
- c# - 循环或 if 语句中的增量
- node.js - 将位置传递给 dialogflow.projects.agent.search 时出错
- html - 我在桌面上有一个很好的图像悬停效果,但它卡在移动设备上(包括 Codepen)
- java - 我在显示用户名时遇到问题。它输出到数据库,但不输出到应用程序本身
- ios - 如何计算 SCNPlane 的法线向量?
- android - MVVM Single Activity 应用程序在离开应用程序或启动 Intent 后返回带有导航组件的嵌套片段
- tensorflow - 运行 TensorFlow AI 时出现 GPU 错误
- python - 在 pandas 数据框中展开时间序列数据
- dialogflow-es - 是否有关于如何为 NLP 集成 Amazon Connect 和 Google DialogFlow 的演示?
- c - C如何访问未对齐内存中的值