我有一个名单,我想分开一个人姓名中的第一个和最后一个单词。
我试图使用“修剪”功能但没有成功。
有人可以解释我怎么能这样做?
表:
Names
Mary Johnson Angel Smith
Dinah Robertson Donald
Paul Blank Power Silver
然后我希望得到结果:
Names
Mary Smith
Dinah Donald
Paul Silver
谢谢,
答案 0 :(得分:3)
您只需使用正则表达式即可:
substring(trim(name) FROM '^([^ ]+)') || ' ' || substring(trim(name) FROM '([^ ]+)$')
当然,只有在100%的情况下才能使用至少第一个和的姓氏。我不是百分之百地确定世界上每个人都是如此。例如:那对于中文名字有用吗?我不确定,我避免对人名做任何假设。最好的是simply ask the user two fields,一个用于"名称" "你想怎么称呼?"。
答案 1 :(得分:2)
另一种利用Postgres字符串处理内置函数的方法:
SELECT split_part(name, ' ', 1) as first_token,
split_part(name, ' ', array_length(regexp_split_to_array(name, ' '), 1)) as last_token
FROM mytable
答案 2 :(得分:0)
这是我从其中带有点的电子邮件中提取全名的方式,例如Jeremy.Thompson@abc.com
SELECT split_part(email, '.', 1) || ' ' || replace(split_part(email, '.', 2), '@abc','')
FROM people
结果:
杰里米汤普森
您可以轻松地用空格替换点:
SELECT split_part(email, ' ', 1) || ' ' || replace(split_part(email, ' ', 2), '@abc','')
FROM people