簡體   English   中英

從一列中拆分字符串並將字符串的一部分提取到sql中的另一列

[英]splitting string from one column and extracting one part of string to another column in sql

我使用SQL Server 2008 R2。 當一個人以兩種不同的格式將數據輸入日期數據庫時,問題就開始了。

該表是:(正如您所注意到的,在“標題”列中有FNameLName ,但它們應該分別在FNameLName列中。

 Title                      FirstName         LastName
 -------------------------------------------------------------------
 Prasident Ena Enic          null              null    *(not ok)*
 Prasident                   Hana              Hanic   *(ok)*
 Prasident Jack Johnson      null              null    *(wrong)*

所以我使用下面的代碼將Title字符串分為3個部分( TitleSFirstNameSLastName )。

ltrim(SUBSTRING (title ,CHARINDEX(' ', title)+1,
charindex(' ',title+' ',charindex(' ',title)+1)-charindex(' ',title)-1)),
ltrim(substring(title, charindex(' ',title,charindex(' ',title)+1), len(title)))

我得到了這種類型的od表。

SplittedTitle   SplittedFirstName  SplittedLastName  FirstName    LastName  
-------------------------------------------------------------------------------
Prasident        Ena                 Enic              null         null
Prasident        Prasident           Prasident         Hana         Hanic
Prasident        Jack                Johnson           null         null

現在我在FirstNameLastName null問題。 如何傳輸正確的數據(從SplittedFirstName和SplittedLastName)而不是null。 我希望任何人都明白我的問題所在。

有人知道嗎 我應該使用哪個功能以及如何使用?

我想你要更新。 您可以使用可更新的CTE進行此操作:

with toupdate as (
      <your query here>
     )
update toupdate
    set FirstName = SplittedFirstName,
        LastName = SplittedLastName
    where FirstName is null and LastName is null;

您的意思是這樣的嗎:

x+IsNull(y,'')

如果它為空,它將用空字符串替換y?

您可以在這里找到有關此功能的更多信息:

您現在要做的就是在結果表上運行更新

UPDATE tablename  
SET   
FirstName = case when SplittedTitle <> SplittedFirstName  
                 then SplittedFirstName end,  
LastName = case when SplittedTitle <> SplittedLastName  
                then SplittedLastName end 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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