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

在postgres中将全名拆分为名和姓

冯驰
2023-03-14

我对将全名分为名字和姓氏的功能感到困惑。例如,我有这些记录

      fullname
     ---------------
         john
        john doe
     john nick doe
  john smith nick doe

我期待这样的结果

你能帮我吗?谢谢

共有1个答案

羿昊英
2023-03-14

您可以在此处使用REGEXP\u REPLACE:

sql prettyprint-override">SELECT
    fullname,
    REGEXP_REPLACE(fullname, '\s+\S+$', '') AS firstname,
    REGEXP_REPLACE(fullname, '^.*\s+(\S+)$', '\1') AS lastname
FROM yourTable;

下面是对用于姓氏的正则表达式模式的解释(用于名字的模式是对其的简化):

^          from the start of the full name
    .*     match all content, greedily, until hitting
    \s+    the final space(s)
    (\S+)  then match and capture the final word in the full name (i.e. the last name)
$          end of the full name

然后,我们使用\ 1替换为捕获的姓氏。

 类似资料:
  • 问题内容: 我有一个客户列表,其名称为全名。我想创建一个将全名作为参数并分别返回名字和姓氏的函数。如果不可能,我可以有两个单独的函数,一个返回名字,另一个返回姓氏。全名列表包含最多三个单词的名称。我想要的是: 全名由两个词组成时。第一个应该是名称,第二个应该是姓氏。 当一个全名由三个词组成时。第一个单词和中间单词应为名字,第三个单词应为姓氏。 例子:- 结果:- 我搜索并找到了无法按预期运行的解决

  • 请帮忙这个表情 如果中间名长度大于1,则firstname附加中间名,中间名为null。如果中间名长度=1,则仅使用中间名和名字拆分到空格之前。Firstname的搜索应该从逗号(,)开始,第三个场景应该匹配。 有人能解释一下吗? 在此查询中,我已经实现了前2个场景,但对于第3个场景,它失败了。

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

  • 本文向大家介绍使用JavaScript拆分名字和姓氏?,包括了使用JavaScript拆分名字和姓氏?的使用技巧和注意事项,需要的朋友参考一下 假设以下是我们的名称字符串- 使用分割名字和姓氏。以下是代码- 示例 要运行上述程序,您需要使用以下命令- 输出结果 在这里,我的文件名为demo163.js。这将产生以下输出-

  • 问题内容: 给定捆绑中文件的名称,我想将该文件加载到我的Swift应用程序中。所以我需要使用这种方法: 无论出于何种原因,该方法都需要将文件名与文件扩展名分开。很好,在大多数语言中将两者分开很容易。但是到目前为止,在Swift中我还没有发现。 所以这是我所拥有的: 如果我在第一行中不包含键入内容,则在随后的两行中都会出现错误。有了它,我在第一行得到一个错误: 如何从扩展名中拆分文件名?有一些优雅的

  • 对于每个名字和姓氏,我只想将它们组合并更新到同一个“名字”表中的全名列中。 表中的每一行都应该发生这种情况。这些列是Id、FirstName、LastName和FullName。 任何帮助都将不胜感激