SQL查询全部替换



我想修改以下查询:

UPDATE wp_posts
SET post_content =
      REPLACE(post_content, 'http://oldlink.com', 'http://newlink.com');

是遍历所有表、列和值的东西。类似于以下内容(但这不起作用):

UPDATE * SET *= REPLACE(*, 'http://oldlink.com', 'http://newlink.com'); 

我想替换我的旧链接的每个实例到我的新链接在我的数据库。有什么办法可以做到吗?

对不起,我忘了说,这是MySQL。我现在正在检查所有的答案,我会回来告诉你什么有效。谢谢大家!

更新2

嗨,伙计们(和女孩),我决定只是转储数据库和做手动搜索和替换(与TextWrangler)。由于这不是(目前)一个大的数据库,这可能是最简单的方法。

这是一个在SQL Server上工作的——像这样的东西对你有用吗?

查找并替换所有表中所有列的SQL Server数据

这里有一个名为SearchAndReplace的存储过程,用于搜索遍历当前所有表的所有字符列数据库,并用提供的另一个用户替换给定的字符串字符串。

如果表中有计算列,这个mssql脚本会发出一点提示,但它仍然会执行:

DECLARE @searchvalue varchar(100)
DECLARE @newvalue varchar(100)
SET nocount off
SET @searchvalue = 'http://oldlink.com'
SET @newvalue = 'http://newlink.com'
SELECT * into #t FROM 
(
SELECT 'update [' + a.TABLE_name + '] SET ['+ column_name+ ']=''' + @newvalue + '''
where [' +a.column_name+
']='''+@searchvalue +'''' sqlstring
FROM INFORMATION_SCHEMA.COLUMNS a
join 
INFORMATION_SCHEMA.TABLES b
ON a.TABLE_name = b.TABLE_name
and b.TABLE_type = 'base table'
WHERE data_type in ('varchar', 'char', 'nvarchar')
and character_maximum_length >= len(@newvalue)
) a
DECLARE @sqlstring as nvarchar(500)
DECLARE SqlCursor CURSOR FAST_FORWARD FOR
SELECT sqlstring FROM #t
OPEN SqlCursor
FETCH NEXT FROM SqlCursor
INTO @sqlstring
WHILE @@FETCH_STATUS = 0
BEGIN
     EXEC(@sqlstring)
     FETCH NEXT FROM SqlCursor
     INTO @sqlstring
END
CLOSE SqlCursor
DEALLOCATE SqlCursor
DROP TABLE #t

你没有提到数据库。我目前使用的是Sybase ASA,不能直接这样做但可以通过检查systablesyscolumn连接中的列名,然后使用execute immediate

最新更新