![](/img/trans.png)
[英]Append & populate first name, last name columns using full name column in same table?
[英]Copy full name from a table and insert first name and last name into new table separate columns
我正在使用 SQL 服務器,我在一個表中有一個名為“全名”的列。 我想將名字和姓氏分開,並將它們放在另一個表中自己的列中。
TABLE 1
**Full Name** (all one columns)
Joe Mamma
Fred Flintstone
Frank ford
John Doe
TABLE 2
**First Name**( Col1) **Last Name** (Column2)
Joe Mamma
Fred Flintstone
Frank ford
John Doe
這是我用來分隔名稱的代碼:
alter table mytable
add
first_name as LEFT(Full_Name,CHARINDEX(' ',Full_Name )-1)
, Last_Name as RIGHT(Full_Name, LEN(Full_Name)- CHARINDEX(' ', Full_Name))
select * from mytable
但這會在原始表中創建單獨的列。 有沒有一種方法可以復制而不創建列?
謝謝!
您可以使用現有代碼,但只需執行SELECT INTO
即可創建新表。
SELECT LEFT(Full_Name,CHARINDEX(' ',Full_Name )-1) AS first_name
,RIGHT(Full_Name, LEN(Full_Name)- CHARINDEX(' ', Full_Name)) AS Last_Name
INTO table2
from mytable
我不會更改原始表格。
假設您已經創建了一個表(我們稱之為 newtable),其中包含 first_name 和 last_name 列:
SELECT
LEFT(Full_Name,CHARINDEX(' ',mytable.Full_Name )-1) as first_name,
RIGHT(Full_Name, LEN(mytable.Full_Name)- CHARINDEX(' ', mytable.Full_Name)) as last_name
INTO newtable
FROM mytable
GO
編輯:如果要填寫名字和姓氏的表已經存在,則可以使用更新語句:
編輯更正語法以與其他開源引擎相對的 T-SQL 保持一致
UPDATE
newtable
SET
newtable.first_name = LEFT(Full_Name,CHARINDEX(' ',mytable.Full_Name )-1),
newtable.last_name = RIGHT(Full_Name, LEN(mytable.Full_Name)- CHARINDEX(' ', mytable.Full_Name))
FROM
mytable
INNER JOIN
newtable
ON
mytable.full_name = newtable.full_name;
這要求有一個關聯兩個表的鍵(在本例中為 person_id),因此更新語句可以根據 mytable 中的行匹配它需要從 new_table 更新哪些行。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.