我试图生成一组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"
部分