JOOQ 3.17 RANGE
type support (#2968)区别于
- 离散范围(例如
DateRange
、IntegerRange
、LongRange
、LocaldateRange
)
- 非离散范围(例如
BigDecimalRange
、LocalDateTimeRange
、OffsetDateTimeRange
、TimestampRange
)
与在PostgreSQL中非常相似,jOOQ将它们视为相同的:
WITH r (a, b) AS (
SELECT '[10,20]'::int4range, '[10,21)'::int4range
)
SELECT a, b, a = b
FROM r;
结果是:
|a |b |?column?|
|-------|-------|--------|
|[10,21)|[10,21)|true |
如您所见,PostgreSQL本身并不区分这两个相同的范围.虽然jOOQ维护您提供的信息,但它们在PostgreSQL中是相同的值.PostgreSQL本身不会将[10,20]::int4range
echo 到jOOQ,因此您无法在jOOQ中保持此值.
如果是need,那么为什么不使用BigDecimalRange
,这相当于PostgreSQL中的numrange
:
WITH r (a, b) AS (
SELECT '[10,20]'::numrange, '[10,21)'::numrange
)
SELECT a, b, a = b
FROM r;
现在,你得到的是:
|a |b |?column?|
|-------|-------|--------|
|[10,20]|[10,21)|false |