我有一张表,我需要清理一列。列中的数字应如下所示:'123 4567'
。但是很多数字都有这样的下划线:123_4567
,我需要摆脱它。我可以使用下面的更新代码执行此操作。
唯一的问题是某些列已经存在,有或没有下划线。然后我得到一个唯一密钥违规,“代码”终止。我知道IGNORE_DUP_KEY=ON
,但它不适用于我的Update语句。我也做了TRY/Catch
没有成功。
让IGNORE_DUP_KEY=ON
工作对我来说似乎是最好的选择。然后,当找到重复的密钥时,它不会终止代码,我可以更改脚本,以便将:2
添加到被忽略的其余行。
UPDATE Table
SET [Name] = REPLACE([Name], '_', ' ')
WHERE Substring([Name],4,1)='_'
答案 0 :(得分: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)='_'