如何从格式为 n.n.n.n 的 ltree select 并在每个级别按数字排序?
How to select from an ltree with format n.n.n.n and sort as numbers at each level?
ltree 列的默认排序为文本。示例:我的 table id、parentid 和 wbs 中有 3 列。 ltree 列 - wbs 有 1.1.12, 1.1.1, 1.1.2
存储在不同的行中。 select 查询按 wbs 列排序 returns 1.1.1, 1.1.12, 1.1.2.
我需要它 return 1.1.1, 1.1.2, 1.1.12
如果 ltree 值的所有元素都是整数,您可以将它们转换为整数数组,可用于排序:
with my_table(wbs) as (
values
('1.1.12'::ltree),
('1.1.1'),
('1.1.2')
)
select wbs
from my_table
order by string_to_array(wbs::text, '.')::int[]
wbs
--------
1.1.1
1.1.2
1.1.12
(3 rows)
ltree 列的默认排序为文本。示例:我的 table id、parentid 和 wbs 中有 3 列。 ltree 列 - wbs 有 1.1.12, 1.1.1, 1.1.2
存储在不同的行中。 select 查询按 wbs 列排序 returns 1.1.1, 1.1.12, 1.1.2.
我需要它 return 1.1.1, 1.1.2, 1.1.12
如果 ltree 值的所有元素都是整数,您可以将它们转换为整数数组,可用于排序:
with my_table(wbs) as (
values
('1.1.12'::ltree),
('1.1.1'),
('1.1.2')
)
select wbs
from my_table
order by string_to_array(wbs::text, '.')::int[]
wbs
--------
1.1.1
1.1.2
1.1.12
(3 rows)