从一组选择为特定表和列的整数值生成int4range



我试图生成一组int4range值,但我得到的不是int4range,而是类型record。我似乎无法提取范围或转换为范围类型。

我特别希望保留sql的SELECT "app_table"."id"部分,因为我正试图操作ORM将其映射到应用程序。

我尝试过的:

SELECT "app_table"."id" FROM (
SELECT id FROM (
SELECT (lag(a) OVER()), a, '[)'
FROM generate_series(0, 10, 1)
AS a OFFSET 1) AS id
) AS app_table LIMIT 3;

我得到的:

id (type of record)
------------------------
1    (0,1,"[)")
2    (1,2,"[)")
3    (2,3,"[)")

另一种尝试:

SELECT "app_table"."id" FROM (
SELECT (lag(id) OVER()), id, '[)'
FROM generate_series(0, 10, 1)
AS id OFFSET 1
) AS app_table

我得到的:

id (type of integer)
------------------------
1    1
2    2
3    3

我正在努力实现的目标:

id (type of int4range)
---------------------------
1    [0,1)
2    [1,2)
3    [2,3)

我确信这是一件简单的事情,我尝试了很多变体,但我一无所获。

SELECT "app_table"."id"
FROM  (
SELECT int4range(a, a+1) AS id
FROM   generate_series(0, 2) a
) app_table;

db<gt;小提琴这里

产生您想要的结果。

要从integer生成类型int4range,请使用相应的函数int4range()
阅读有关构造范围和多范围的手册。

你已经用一个表别名做到了这一点:

我特别想保留sql的SELECT "app_table"."id"部分

最新更新