在SQL Server 2008中拆分全名并将其写入另一个表

在SQL Server 2008中拆分全名并将其写入另一个表,sql,sql-server,database,split,Sql,Sql Server,Database,Split,我有一个表,比如a,其中有一列全名。此列下存储的值的格式为“姓氏名称中间名”(每个值之间有一个空格)。我还有另一个表B,其中有姓、名和名列。从表A中提取所有全名单元格,将其相应拆分并插入表B的最佳方法是什么 感谢您,您可以将用于搜索字符串中的事件(通常返回其索引)的函数与子字符串函数组合在一起,此外还需要左函数和右函数 例如,在SQL Server中,您可以找到以下函数: 步骤: 使用左侧获取第一个单词(整数表达式=第一个单词的索引 Emtpy空间) 使用子字符串获取中间单词(start

我有一个表,比如a,其中有一列全名。此列下存储的值的格式为“姓氏名称中间名”(每个值之间有一个空格)。我还有另一个表B,其中有姓、名和名列。从表A中提取所有全名单元格,将其相应拆分并插入表B的最佳方法是什么


感谢您,您可以将用于搜索字符串中的事件(通常返回其索引)的函数与子字符串函数组合在一起,此外还需要左函数和右函数

例如,在SQL Server中,您可以找到以下函数:

步骤:

  • 使用左侧获取第一个单词(整数表达式=第一个单词的索引 Emtpy空间)
  • 使用子字符串获取中间单词(start是第一个单词的索引) Emtpy空格+1,length是整个长度-的第二个索引 在emtpy空间中,使用startlocation搜索第二个事件,该事件应为第一个事件+1)
  • 使用正确的函数获取与步骤1类似的最后一个单词

  • 注意,如果中间有空格(例如anna maria的第一个名字),这将无法正常工作。

    < p>可以将字符串中出现的函数(通常返回其索引)与子字符串函数结合起来,此外,还需要左右函数

    例如,在SQL Server中,您可以找到以下函数:

    步骤:

  • 使用左侧获取第一个单词(整数表达式=第一个单词的索引 Emtpy空间)
  • 使用子字符串获取中间单词(start是第一个单词的索引) Emtpy空格+1,length是整个长度-的第二个索引 在emtpy空间中,使用startlocation搜索第二个事件,该事件应为第一个事件+1)
  • 使用正确的函数获取与步骤1类似的最后一个单词

  • 注意,如果你有任何名字,包括中间空格(例如anna maria的第一个名字),这将无法正常工作。

    < P>此查询将删除字符串。

    select left(FULLNAME,CHARINDEX(' ',FULLNAME)), SUBSTRING(FULLNAME,CHARINDEX(' ',name)+1,len(FULLNAME)) from tableA
    

    此查询将溢出您的字符串

    select left(FULLNAME,CHARINDEX(' ',FULLNAME)), SUBSTRING(FULLNAME,CHARINDEX(' ',name)+1,len(FULLNAME)) from tableA
    

    添加表格结构,有助于理解问题。另外,您使用的是哪种RDBMS,MS SQL Server,MySQL,PostgreSQL。。。?你试过什么?发布一些工作查询,不管结果是否不正确,这是一个起点,也许你离解决方案不远了。如果可能,也发布一些测试数据。您可以使用来提供所有这些信息。我使用的是MS SQL Server。另外,我试着看一些像这里描述的用户定义函数,但我对所有这些都有点陌生(很明显,你可以告诉我),对这些几乎没有概念。写全名示例..添加你的表结构,这有助于理解你的问题。另外,您使用的是哪种RDBMS,MS SQL Server,MySQL,PostgreSQL。。。?你试过什么?发布一些工作查询,不管结果是否不正确,这是一个起点,也许你离解决方案不远了。如果可能,也发布一些测试数据。您可以使用来提供所有这些信息。我使用的是MS SQL Server。另外,我试着看一些像这里描述的用户定义函数,但我对所有这些都有点陌生(你可以很明显地看出),对这些几乎没有概念。。