1

我有一张桌子,比如A,其中有一列FULLNAME。此列下存储的值的格式为“姓氏中间名”(每个之间有一个空格)。我还有另一个表B,其中有SURNAMENAMEMIDDLENAME列。从表A中获取所有FULLNAME单元格的最佳方法是什么,相应地拆分它们并将它们插入表B中?

谢谢

4

2 回答 2

4

您可以将用于搜索字符串中出现的函数(通常返回其索引)与 Substring 函数结合使用,此外您还需要 Left 和 Right 函数

例如,在 SQL Server 中,您会发现以下函数:

CHARINDEX ( expressionToFind ,expressionToSearch [ , start_location ] )

SUBSTRING(表达式,开始,长度)

左(字符表达式,整数表达式)

右(字符表达式,整数表达式)

脚步:

  1. 使用 LEFT 获取第一个单词(integer_expression = 第一个 Emtpy 空间的索引)
  2. 使用 Substring 获取中间词(start 是第一个 Emtpy 空间的索引 + 1 ,length 是整个长度 - emtpy 空间的第二个索引,使用 startlocation 搜索应该是第一个出现 +1 的第二个出现)
  3. 使用正确的函数来获取最后一个单词,类似于步骤 1

请注意,如果您有任何名称,包括中间的空格(例如像 anna maria 这样的名字),这将不会按预期工作。

于 2013-02-15T08:28:51.133 回答
0

此查询将溢出您的字符串。

select left(FULLNAME,CHARINDEX(' ',FULLNAME)), SUBSTRING(FULLNAME,CHARINDEX(' ',name)+1,len(FULLNAME)) from tableA
于 2013-02-15T09:17:53.320 回答