java - 如何使用 JOOQ 在 FROM 子查询中添加 jsonb 函数
问题描述
您如何使用 jooq 构建此查询?
select et.id
from t, et,
jsonb_array_elements(t.keys_and_values) as s, jsonb_object_keys(s) as s1
where et.id = t.id
and s1 = 'key'
解决方案
每当您缺少对供应商特定 SQL 功能的 API 支持时,您可以求助于使用纯 SQL 模板 API。即写
Table<?> s = DSL.table("jsonb_array_elements({0})", T.KEYS_AND_VALUES).as("s");
Table<?> s1 = DSL.table("jsonb_object_keys({0})", s).as("s1");
然后,为了形成一个谓词,你可以写:
DSL.condition("{0} = {1}", s1, DSL.val("key"));
还有许多其他方法,都使用普通的 SQL 模板 API,具体取决于您希望重用某些供应商特定函数表达式的程度等。
推荐阅读
- c++ - 如何在 C++ 中从用户那里获取具有预定义字符串长度的字符串输入?
- reactjs - Reactjs 在刷新时保持 Material Ui 选项卡处于选中状态
- cloud-foundry - 在 Cloud Foundry 上运行的应用程序的监控环境
- python - 在 Python 中使用正则表达式删除某个标点符号周围的数字
- vim - vim 启动时忽略 vimrc 中的所有错误
- powershell - 序列化对象如何在 powershell 中工作
- express - Express - next() 没有在控制器中调用
- postgresql - 从 PostgreSQL 转储中恢复列
- java - 在 Java 微服务系统中哪里可以找到错误检查?
- wordpress - 如何在 wordpress org 主题目录上批准 wordpress 主题?