将数据从一个colunn拆分为SQL中多行上的两个新列

将数据从一个colunn拆分为SQL中多行上的两个新列,sql,split,Sql,Split,我使用的是SQL Express 2012,而且我对它还比较陌生,所以到目前为止,这个网站一直是一件好事!我现在陷入了一个没有找到合适答案的问题 我有一个名为的表,已通过索赔。在这里,我有一个名为Client_Name的列,这是一个名称列表,其中包含由空格分隔的第一个和第二个名称(例如John Smith)。我创建了两个新列,Client\u First\u Name和Client\u names 我要做的是将名字输入到“名字”列,将姓氏输入到“姓氏”列。 我遇到了这样的事情,但它只是一排,不是

我使用的是SQL Express 2012,而且我对它还比较陌生,所以到目前为止,这个网站一直是一件好事!我现在陷入了一个没有找到合适答案的问题

我有一个名为
的表,已通过索赔
。在这里,我有一个名为
Client_Name
的列,这是一个名称列表,其中包含由空格分隔的第一个和第二个名称(例如John Smith)。我创建了两个新列,
Client\u First\u Name
Client\u names

我要做的是将名字输入到“名字”列,将姓氏输入到“姓氏”列。 我遇到了这样的事情,但它只是一排,不是所有的行在一次去。
我怎样才能做到这一点?

您方法中的问题是,当客户有多个姓氏和一个姓氏时,这将不起作用。您可以尝试以下方法:

INSERT INTO Client_First_Name VALUES(SELECT Client_Name LIKE '% %' THEN LEFT(Client_Name, Charindex(' ', Client_Name) - 1));

INSERT INTO Client_Surname VALUES(SELECT Client_Name LIKE '% %' THEN RIGHT(Client_Name, Charindex(' ', Reverse(Client_Name)) - 1));

这是您需要的基本语法,假设每个名称只有一个名字:

UPDATE [Claims Passed]
    SET Client_First_Name = SUBSTRING(Client_Name, 1, CHARINDEX(' ', Client_Name) - 1),
    Client_Surname = SUBSTRING(Client_Name,CHARINDEX(' ', Client_Name) + 1, LEN(Client_Name)

你可以在这里找到答案:。对于这样简单的问题,这是非常复杂的。我宁愿避免在SQL中这样做。