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 に答える