簡體   English   中英

從表中復制全名並將名字和姓氏插入到新表的單獨列中

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM