如何在PostgreSQL中对数字进行最后排序



找到了许多相关的答案,但没有找到任何答案。

如何按数字排序最后:

AA
ZZ
11
55

并且,优选(但不是必需(

AA
A1
A2

PostgreSQL 11.9

此外,出于性能原因,可能不想使用正则表达式。也不想创建索引。。。

我认为正则表达式是正确的方法:

order by (col ~ 'd')::int, col

这会先放入完全不包含数字的行,然后放入其余行。在每组中,行按升序排列。

您可以创建一个排序规则来完成此操作,并将其用于此order by

CREATE COLLATION digitslast (provider = icu, locale = 'en@colReorder=latn-digit');
CREATE COLLATION
with v (a) as (values ('123abc'), ('abc123'), ('ABC123')) 
select a from v order by a collate "digitslast";
a
--------
abc123
ABC123
123abc
(3 rows)
with v (a) as (values ('123abc'), ('abc123'), ('ABC123')) 
select a from v order by a; 
a    
--------
123abc
abc123
ABC123
(3 rows)

相关内容

  • 没有找到相关文章

最新更新