我正在try 用jOOQ在postgres上揭开枚举类型,这样我就可以在WITH子句中使用它进行交叉联接.

我试着写的是这样一个表达

WITH weekdays as (
  SELECT unnest(enum_range(NULL::week_days)) AS day
)
...
SELECT ...
FROM users
CROSS JOIN weekdays
...

WITH语句和CROSS JOIN语句只是为了说明上下文.

我真正纠结的是SELECT unnest(enum_range(NULL:week_days)) AS day表达式(week_days是一个值为montue的枚举,等等).我只是想不出如何在jOOQ中指定它.

推荐答案

SELECT unnest(...)只是一种奇怪的、特定于PostgreSQL的SELECT * FROM unnest(...)替代语法.JOOQ不支持前者,而支持后者.有关详细信息,请参阅此功能请求:

现在,enum_range(NULL::weekdays)是一个特定于PostgreSQL的函数,它可以工作的事实有点奇怪,但为什么不呢?您可以将代码生成器指向pg_catalog模式来生成enum_range()函数,或者只使用plain SQL templating来表示不可用部分,例如

select(DSL.field(
    "unnest(enum_range(NULL::week_days))", 
    SQLDataType.VARCHAR.asEnumDataType(WeekDays.class)
))

假设您已经使用代码生成器为您的枚举获得了WeekDays个类.

Postgresql相关问答推荐

利用PostgreSQL查询中表的顺序来计算包含每次时间的时间范围

如何接受jsonb路径中的任何密钥?

Postgres将唯一索引添加到已在分区上具有PK的分区表中,然后添加PK

Postgres查询按月和年分组的总计数

如何在PostgreSQL中 Select 最近30天内的开始日期?

将整数(以毫秒为单位的epoch时间)转换为PrimitiveDateTime

如何准确确定边界附近的点和地理的 ST_Intersects(ST_Intersects geography vs. Geometry diffrepancy)

使用正则表达式计算 SQL 查询中 WHERE 过滤器的数量

如何计算每月的出版物数量?

Power BI + Postgres:只读用户

为什么在 PostgreSQL 中忽略查询超时?

Postgresql如何从jsonB列的数组中的多个json中 Select 一个值

使用 Heroku CLI、Postgres 的 SQL 语法错误

Postgresql:创建默认表空间的视图和使用?

在 to_tsquery 中转义特殊字符

获取 OperationalError: FATAL: sorry, too many clients already using psycopg2

PostgreSQL ORDER BY 问题 - 自然排序

无法向 postgresql 数据库授予用户权限(对于 rails 应用程序)

postgresql 分组和内部连接

PostgreSQL 权限解释