查询以查找和替换SQL数据库中的特定文本(所有表和所有列)

时间:2012-08-15 09:36:32

标签: sql sql-server-2008

我有一个包含+100表的数据库,大多数表都有一个保存URL的列但具有不同的“列名”,并且URL也不同。 e.g。

在一张表中

usa3030.Development.com/portal/mybook/chapter1/page1/line1

和另一个

usa3030.Development.com/portal/mybook/chapter1

依此类推,但确保每个网址都包含“usa3030.Development.com/portal/mybook/chapter1”

所以我想要一个查询,找到列数据中包含文本的每个列(“*”我认为我们称之为通配符)

"usa3030.Development.com/portal/mybook/chapter1"

并将其替换为

usa3030.Development.com/MyWorld/Chp1

答案

Search Or replace Stored Procedure

1 个答案:

答案 0 :(得分:1)

我猜你必须完成以下步骤:

DECLARE @string varchar(max)
For each table in sys.Objects (where type='U')

      For each column of the above table

        IF EXISTS(select * from tablename where colname like '%'+@string+'%')
        update table tablename SET colnmae=REPLACE(colname,'old','new') where colname like '%'+@string+'%')