arrays - 如何在 JSONB 数组的元素上使用 LIKE?
问题描述
我需要搜索LIKE
或ILIKE
- 应用于JSONB[]
列的元素。
我可以用来单独unnest()
显示嵌套JSONB
元素,但我无法将它与我的LIKE
表达式结合起来。我的查询:
SELECT
UNNEST( column_jsonb[] )
FROM
table1
WHERE
UNNEST( column_jsonb[] ) ->> 'member_type' LIKE '%member%'
导致错误:
WHERE 的参数不能返回一个集合
如何做到这一点?
解决方案
如果它确实是一jsonb[]
列:
SELECT * -- or whatever
FROM t, unnest(jsonb_col) j
WHERE j->>'member_type' LIKE '%member%';
那是一个隐含的CROSS JOIN LATERAL
.
如果它是普通jsonb
列中的 JSON 数组(更有可能):
SELECT *
FROM t1, jsonb_array_elements(jsonb_col) j
WHERE j->>'member_type' LIKE '%member%';
有关的:
推荐阅读
- python - 如何阻止或隐藏某个用户远程机器人的内联键盘
- .net - 错误“从字符串转换为十进制类型无效”
- sql - 查询以查找每年的活跃天数以查找每位用户每年的收入
- r - 从 API 返回错误时应用将数据帧转换为字符的函数
- python - Python 代理中缺少 1 个必需的位置参数
- javascript - 如何在不使用任何库的情况下在 JavaScript 中以单行格式格式化日期
- reactjs - Jest & react-testing-library - 为有条件渲染的孩子添加测试
- performance - Neo4j 构建初始图很慢
- python - Python - 将对象格式的纪元转换为日期时间
- python - 将文本文件加载到具有特定格式的 DataFrame 中