gpt4 book ai didi

sql - 在 postgres 中拆分人名的最简单方法?

转载 作者:行者123 更新时间:2023-11-29 12:28:52 25 4
gpt4 key购买 nike

考虑一个包含全名的表:

create table names (full_name varchar not null);   
insert into names (full_name)
values ('Jane Marie Doe'), ('John Doe');

在 postgres 中,什么是最简单(最易读)的将名字分成名字和姓氏的方法?

 first_name | last_name 
------------+-----------
Jane Marie | Doe
John | Doe
(2 rows)

这是我想出来的,但看起来真的很复杂。当然有更简单的方法吗?

select 
array_to_string(ary[1:len - 1], ' ') as first_name,
ary[len] as last_name
from (
select ary, array_length(ary, 1) as len
from (
select regexp_split_to_array(full_name, E'\\s+') as ary
from names
) sub1
) sub2;

最佳答案

你可以试试

SELECT regexp_split_to_array(full_name, E'\\s\\S+') as ary

相反,因为它应该始终如一地在最后一个空格上拆分。然后你知道 ary

只会有两个成员

编辑:进一步思考,我认为最好的方法可能是使用

SELECT regexp_replace(full_name,'\s\S+','') as first_name
SELECT regexp_replace(full_name,'.+[\s]','') as last_name

关于sql - 在 postgres 中拆分人名的最简单方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32488398/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com