0

我需要运行 postgresql 查询以从数据库中获取名称,但我需要按字母顺序对这些名称进行排序。我从数据库中获取的名称如下:

(123) Jone Lee
(22) Hans Hee
2 Dean Alloni
Alen Khan

我需要输出

Alen Khan
2 Dean Alloni
(22) Hans Hee
(123) Jone Lee

我尝试了以下 psql 查询:

select name from table order by substring(name, E'\\W+\ +(.*)');
select name from table order by substring(name, E'\\(?\\w+?\\)?\ +?(.*)');

如果名字是 Alen Khan,我的问题是,它只返回 Khan,所以我得到:

Khan
Dean Alloni
Hans Hee
Jone Lee

任何帮助将不胜感激,

亲切的问候

4

2 回答 2

0
select name 
from table 
order by substring(name, E'[a-zA-Z]+')

根据OP的评论进行编辑

select name
from table order by regexp_replace(name, '[^a-zA-Z]', '', 'g')
于 2015-11-17T08:53:35.813 回答
0

这将按字符串最后一个单词排序

 select name from table 
 order by (string_to_array(trim(name),' '))[ array_upper(string_to_array(trim(name),' '),1)  ]  
于 2015-11-17T09:27:49.673 回答