1

ltree 列的默认排序为文本。示例:我的表 id、parentid 和 wbs 中有 3 列。ltree 列 - wbs 已1.1.12, 1.1.1, 1.1.2存储在不同的行中。按 wbs 列排序的选择查询返回1.1.1, 1.1.12, 1.1.2.

我需要它返回1.1.1, 1.1.2, 1.1.12

4

1 回答 1

1

如果 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)
于 2019-04-27T11:40:52.700 回答