搜索并替换数据库中的部分字符串 - 有哪些缺陷?

时间:2014-12-30 14:22:07

标签: sql sql-server string replace str-replace

我需要更换所有事件" google.com"在 SQL db表Column1中使用" newurl"来满足这些要求。它可以是一个完整的单元格值,它的一部分(varchar()的子串),甚至可以在单元格中多次使用。

基于SO answer search-and-replace-part-of-string-in-database

这就是我需要的:

UPDATE
    MyTable
SET
    Column1 = Replace(Column, 'google.com', 'newurl')
WHERE
    xxx

然而,在该答案中提到了

You will want to be extremely careful when doing this! I highly recommend doing a backup first.

执行此查询有哪些陷阱?通过单击“全部替换”按钮,它看起来与任何texteditor所做的相同。我不认为在我的情况下即使使用保留副本也可以检查错误,因为我想提前知道可能的错误。

有什么理由要小心这个查询吗? 同样,我希望它取代google.com所有出现的&new;新的'在SQL db中的MyTable表的Column1中。

谢谢。

2 个答案:

答案 0 :(得分:1)

只需创建一个测试表,作为原始源表的副本,在那里完成更新并检查结果。

您希望将此作为良好的SQL编程实践,以确保您不会弄乱不应更新的列。

您可以做的另一件事是使用SELECT语句获取符合条件的事先计数。

运行你的更新声明,如果它在计数上匹配为1-1,你应该很高兴。

我唯一可以想到的是,在这方面会发生负面影响,因为其他列会更新。您的WHERE子句并不是我们特定的,所以没有办法验证您正在做的事情会按照您的预期进行。

答案 1 :(得分:1)

我认为发布答案的人只是谨慎 - 这将修改MyTable中每一行的Column1中的值,因此请确保在执行时表示它。另一种谨慎的方法是将它包装在一个事务中,这样如果你不喜欢结果就可以回滚它。