postgresql - Postgres jsonb_array_elements
问题描述
我有一个带有下一个 jsonb 字段的表 -
{ "auth": [{"roles": ["role1", "role2"]}]}
当我做这个查询 -
select jsonb_array_elements(role) as role from (
select x -> 'roles' as role
from test,
jsonb_array_elements(data->'auth') x
输出格式是
role
----
"role1"
"role2"
当前的问题是,如果我尝试添加不起作用的地方
x.role = '"role1"'
,但是这个确实有效x.role like '%"role1"%'
谢谢
解决方案
可以使用 ->> 运算符将“角色”字段恢复为文本数据。
create table test (data jsonb);
insert into test values('{ "auth": [{"roles": ["role1", "role2"]}]}');
with cte as (
select jsonb_array_elements(role) ->> 0 as role from
(
select x -> 'roles' as role
from test, jsonb_array_elements(data->'auth') x) y)
select role from cte where role = 'role1';
推荐阅读
- python - 用于按索引对数组进行乘法的 Python 函数
- swift - SwiftUI 列表不会附加/插入某些元素的最后一个字符
- c# - 如何创建一个方法,其参数是一个函数,其参数可以是扩展给定类的任何类的对象?
- r - 有没有办法使用 R 创建实际调查的模拟数据集?
- c - 如果 c == '\0',函数 Strrchr 如何找到最后一个 c?
- sql-server - 非英语 PC 上的无人值守 SQL 安装?
- machine-learning - 克服使用来自 h2o 模型的 iml 的兼容性问题
- javascript - 使用条件与地图
- python - 循环赛中无限制的休息球员
- javascript - 节点 EJS 包的漏洞?