在一行中将数​​据从一列拆分为SQL中的两个新列

时间:2014-06-05 10:25:38

标签: sql split

我使用的是SQL Express 2012,而且我对它很陌生,所以到目前为止这个网站一直是个祝福!我现在坚持一个我没有找到合适答案的查询。

我有一张名为Claims Passed的表格。在这里我有一个名为Client_Name的列,这是一个名称列表,它们包含由空格分隔的第一个和第二个名称(例如John Smith)。我创建了两个新列Client_First_NameClient_Surname

我尝试做的是获取名字列中的第一个名称和姓氏列中的姓氏。 我遇到过这样的事情,但它只有一行,而不是一行中的所有行。 我怎么能这样做?

2 个答案:

答案 0 :(得分: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)

答案 1 :(得分:0)

您的方法存在的问题是,当一个客户有多个姓氏和一个姓氏时,他们不会工作。你可以尝试这样的事情:

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));