使用正则表达式的 Postgresql 子串
Postgresql substring using regex
我需要 运行 一个 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,它只是return Khan,所以我得到:
Khan
Dean Alloni
Hans Hee
Jone Lee
如有任何帮助,我们将不胜感激,
亲切的问候
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')
这将按字符串最后一个词排序
select name from table
order by (string_to_array(trim(name),' '))[ array_upper(string_to_array(trim(name),' '),1) ]
我需要 运行 一个 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,它只是return Khan,所以我得到:
Khan
Dean Alloni
Hans Hee
Jone Lee
如有任何帮助,我们将不胜感激,
亲切的问候
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')
这将按字符串最后一个词排序
select name from table
order by (string_to_array(trim(name),' '))[ array_upper(string_to_array(trim(name),' '),1) ]