将 jsonArrayAgg 合并为 jOOQ 中的空数组

Posted

技术标签:

【中文标题】将 jsonArrayAgg 合并为 jOOQ 中的空数组【英文标题】:Coalesce jsonArrayAgg to empty array in jOOQ 【发布时间】:2021-04-01 06:54:14 【问题描述】:

在新的 jOOQ 3.14 SQL/JSON 支持版本(在 PostgreSQL 中)中,coalesce 的等价物是什么?

select coalesce(json_agg(t.*), '[]'::json)
from (select 'test' as mycol where 1 = 2) t;

不幸的是,以下失败并出现错误“COALESCE types json and uuid[] cannot be match”。

coalesce(jsonArrayAgg(mycol), emptyArray<type>())

【问题讨论】:

【参考方案1】:

JSON.json()JSONB.jsonb(),例如:

coalesce(jsonArrayAgg(mycol), inline(json("[]")))
coalesce(jsonbArrayAgg(mycol), inline(jsonb("[]")))

但您也可以使用jsonArray()jsonbArray() 构造函数:

coalesce(jsonArrayAgg(mycol), jsonArray())
coalesce(jsonbArrayAgg(mycol), jsonbArray())

【讨论】:

以上是关于将 jsonArrayAgg 合并为 jOOQ 中的空数组的主要内容,如果未能解决你的问题,请参考以下文章

不兼容的类型不允许在 JOOQ dsl 中合并子查询

在更新语句中排除空列 - JOOQ

JOOQ 使用转换器将字符串转换为枚举

使用 JOOQ 从 POJO 设置字段为空

Jooq 不会为失败抛出异常

jOOQ 不生成将 <daos> 标志设置为 true 的 DAO