当前位置: 首页 > 知识库问答 >
问题:

返回人名中的第一个和最后一个单词-postgres

漆雕成弘
2023-03-14

我有一个名字列表,我想把一个人名字中的第一个和最后一个单词分开。

我试图使用“trim”功能,但没有成功。

有人能解释一下我是怎么做到的吗?

表:

Names 
Mary Johnson Angel Smith
Dinah Robertson Donald
Paul Blank Power Silver

因此,我想要:

Names
Mary Smith
Dinah Donald
Paul Silver

谢谢

共有3个答案

公冶俊达
2023-03-14

以下是我如何从带有点的电子邮件中提取全名,例如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   
纪鸿禧
2023-03-14

另一种利用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          
卢伟志
2023-03-14

您只需使用正则表达式即可实现,例如:

substring(trim(name) FROM '^([^ ]+)') || ' ' || substring(trim(name) FROM '([^ ]+)$')

当然,它只能工作,你是100%,总是至少提供一个名字和一个姓氏。我不是100%确定世界上的每个人都是这样。例如:这对中文名字有用吗?我不确定,我避免对人名做任何假设。最好的办法是简单地问用户两个字段,一个是“姓名”,另一个是“您希望被如何称呼?”。

 类似资料:
  • 我试图解析全名,将其读作名字、中间名、姓氏和后缀。我已经尝试了半段SQL代码,但我需要帮助根据以下逻辑获取后缀。 如果没有后缀,则留下字段NULL如果没有中间名,则留下字段NULL ,Ltrim(子字符串(名称,1,Isnull(Nullif(CHARINDEX(“”,NAME),0),1000))作为FirstName,Ltrim(子字符串(名称,CHARINDEX(“”,NAME),CASE

  • 这是我的表类 如果((布尔)model.getValueat(r,3)==true){col.setpk(true);} 它给出错误,因为返回类型是布尔型。

  • 问题内容: 我发布此消息是因为该主题刚刚在另一个问题/答案中提出,并且该行为没有得到很好的记录。 考虑数据框 我想获取由column定义的每个组的第一行和最后一行。 我试过了 但是,这并没有给我我所期望的。 如何获得每个组中的实际第一个和最后一个值? 问题答案: 一种选择是使用该方法: 但是,我还没有找到一种将它们整齐地聚合的方法。当然,总是可以使用构造函数: 注意:我明确使用了该属性,否则您必须

  • 例如,从下面的代码 这只是一个示例数据集,我有一个包含6000行的数据框,我想找到每列的第一个和最后一个值,其中我还有作为值。我也不知道我的第一个值或最后一个值的索引。 我试过了 很少有人来自Link1,Link2,但没有任何成功。我还想得到第一个元素,而不是最小值。

  • 本文向大家介绍JavaScript数组中的第一个元素和最后一个元素?,包括了JavaScript数组中的第一个元素和最后一个元素?的使用技巧和注意事项,需要的朋友参考一下 数组是一组元素。每个元素都有其自己的 索引值。我们可以使用这些索引访问任何元素。但是,对于最后一个元素,直到知道数组中存在的元素数量,我们才知道索引。在这种情况下,我们必须使用逻辑。让我们简要地讨论这些细节。 访问第一个元素 因

  • 问题内容: 有没有办法只分割列表中的第一项和最后一项? 例如; 如果这是我的清单: 我 想 这样做(显然是无效的语法): 我尝试过的一些方法: 问题答案: 单程: 更好的方法(不使用切片,但更易于阅读):