我试图找到一种方法来返回匹配的角色(S)为下面的查询,但不确定是否可能在所有。我环顾四周,但找不到任何东西。
SELECT
/* here return either 'user' or 'user,admin' */
FROM users
WHERE
id = 'xyz' AND
roles::jsonb ?| array['user','admin'];
字符串
DB中的字段(json
类型)以及查询结果应该是什么样子
roles: ["manager"] -> should return nothing
roles: ["user"] -> should return 'user'
roles: ["admin"] -> should return 'admin'
roles: ["user","admin"] -> should return 'user,admin'
型
1条答案
按热度按时间7eumitmz1#
实现所需结果的一种方法是
jsonb_array_elements_text
从json
数组中删除嵌套,然后使用where子句过滤角色。类似于:字符串