sql - Postgres 从表中选择行,其中 JSONB 数组中的变量
问题描述
我试图在我的数据库中获取行,其中每行都包含 JSONB 列中的值。到目前为止我所拥有的是
SELECT *
FROM users
WHERE roles @> '[{"type": $2 }]'
Roles 是一个 JSONB 数组,可以有大约 5 个值。
获得具有“管理员”角色的用户的最简单方法是什么。Postgres 不喜欢 $2,我可以轻松地修改查询并将值作为字符串插入,但不想增加 SQL 注入攻击的机会。
解决方案
您可以使用 jsonb 构建器函数来生成正确的 jsonb 数组;这允许正确传递参数:
select *
from users
where roles @> jsonb_build_array(jsonb_build_object('type', $2))
推荐阅读
- c# - 如何在 Unity 中制作计时器
- html - 尽管尝试了所有 Stackoverflow 建议,但背景图像仍然无法正常工作
- php - 如何从使用 AJAX 提交的表单中选择和提取数据,该表单是具有相同类名的其他表单之一?
- ruby - 如何对 collection_radio_buttons 对象进行排序
- python - 如何有效利用 celery 在 1 秒内执行多项任务?
- javascript - 方法调用后输入中的值不会更新
- qbasic - 具有线性激活函数并从输入层前馈到单个输出层的神经网络
- javascript - 如何使用 Javascript 将单词包含在带有 HTML 标记的字符串中?
- java - 为什么 Map getter 看起来与 Map.Entry getter 不同?
- php - 我需要一种在预定时间向每个客户发送 SMS(通过 Nexmo SMS Gateway)的简单方法