2017-06-16 52 views
0

我必須清理一些導入的數據。將一些條目更改爲我使用的正確代碼。我有它的工作,但有更清晰的方式比清單更新/集?SQL Server - 多個更新/更正數據條目

update List 
    SET STCode = REPLACE(STCode, 'Georgia','GEO') 
update List 
    SET STCode = REPLACE(STCode, 'Louisiana','LOU') 
etc... 
+2

創建一個翻譯表,將它加入到您的表中進行更新,並且您只需要一條更新語句。 –

+0

請注意需要按特定順序進行的替換,例如「西弗吉尼亞州」應該在「弗吉尼亞州」之前處理,以避免混淆。 – HABO

回答

1

最多一個價值提供STCode店進行更換(如「喬治亞州和路易斯安那州」沒有東西)查找表是解決方案

update List 
    set STCode = REPLACE(STCode, replacement.bad, replacement.good) 
    from List l 
    join (
     values 
     ('Georgia','GEO') 
     ,('Louisiana','LOU') 
    ) replacement(bad, good) 
     on l.STCode like '%' + replacement.bad + '%' 
     ; 
1

可以使用transalation表與工會和加入

UPDATE T1 
    SET T1.STCode = T2.code 
    FROM List AS T1 
    INNER JOIN (
     select 'Georgia' name ,'GEO' code 
     union 
     select 'Louisiana','LOU' 
) T2 on .T1.STCode = T2.name