0

我有一张桌子,我需要清理一列。列中的数字应如下所示:'123 4567'。但是许多数字都有这样的下划线:123_4567,我需要摆脱它。我可以使用下面的更新代码来做到这一点。

唯一的问题是当某些列已经存在或不带下划线时。然后我得到一个唯一密钥违规并且“代码”被终止。我知道,IGNORE_DUP_KEY=ON但它不适用于我的更新声明。我也做了一个TRY/Catch没有成功。

开始IGNORE_DUP_KEY=ON工作对我来说似乎是最好的选择。然后它不会在找到重复键时终止代码,我可以更改脚本以添加:2到其余被忽略的行中。

UPDATE Table  
    SET [Name] = REPLACE([Name], '_', ' ')  
    WHERE Substring([Name],4,1)='_'
4

1 回答 1

0

这是一次性的工作,对吧?我会这样做,直接在违反唯一密钥的地方添加“:2”。

UPDATE T SET 
    T.[Name] = 
        REPLACE(T.[Name], '_', ' ')  +
        CASE WHEN T2.NAME IS NOT NULL THEN ':2' ELSE '' END
FROM 
    Table T
LEFT JOIN 
    Table T2 ON T2.[Name] = REPLACE(T.[Name], '_', ' ')  
WHERE 
    Substring(T.[Name],4,1)='_'
于 2013-01-14T11:04:13.187 回答