Created
November 17, 2010 16:38
-
-
Save neilmiddleton/703612 to your computer and use it in GitHub Desktop.
SQL Find and Replace
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
SET NOCOUNT ON | |
DECLARE @stringToFind VARCHAR(100) | |
DECLARE @stringToReplace VARCHAR(100) | |
DECLARE @schema sysname | |
DECLARE @table sysname | |
DECLARE @count INT | |
DECLARE @sqlCommand VARCHAR(8000) | |
DECLARE @where VARCHAR(8000) | |
DECLARE @columnName sysname | |
DECLARE @object_id INT | |
SET @stringToFind = 'old_string' | |
SET @stringToReplace = 'new_string' | |
DECLARE TAB_CURSOR CURSOR FOR | |
SELECT B.NAME AS SCHEMANAME, | |
A.NAME AS TABLENAME, | |
A.OBJECT_ID | |
FROM sys.objects A | |
INNER JOIN sys.schemas B | |
ON A.SCHEMA_ID = B.SCHEMA_ID | |
WHERE TYPE = 'U' | |
ORDER BY 1 | |
OPEN TAB_CURSOR | |
FETCH NEXT FROM TAB_CURSOR | |
INTO @schema, | |
@table, | |
@object_id | |
WHILE @@FETCH_STATUS = 0 | |
BEGIN | |
DECLARE COL_CURSOR CURSOR FOR | |
SELECT A.NAME | |
FROM sys.columns A | |
INNER JOIN sys.types B | |
ON A.SYSTEM_TYPE_ID = B.SYSTEM_TYPE_ID | |
WHERE OBJECT_ID = @object_id | |
AND IS_COMPUTED = 0 | |
AND B.NAME IN ('char','nchar','nvarchar','varchar','text','ntext') | |
OPEN COL_CURSOR | |
FETCH NEXT FROM COL_CURSOR | |
INTO @columnName | |
WHILE @@FETCH_STATUS = 0 | |
BEGIN | |
SET @sqlCommand = 'UPDATE ' + @schema + '.' + @table + ' SET [' + @columnName + '] = REPLACE(convert(nvarchar(max),[' + @columnName + ']),''' + @stringToFind + ''',''' + @stringToReplace + ''')' | |
SET @where = ' WHERE [' + @columnName + '] LIKE ''%' + @stringToFind + '%''' | |
EXEC( @sqlCommand + @where) | |
SET @count = @@ROWCOUNT | |
IF @count > 0 | |
BEGIN | |
PRINT @sqlCommand + @where | |
PRINT 'Updated: ' + CONVERT(VARCHAR(10),@count) | |
PRINT '----------------------------------------------------' | |
END | |
FETCH NEXT FROM COL_CURSOR | |
INTO @columnName | |
END | |
CLOSE COL_CURSOR | |
DEALLOCATE COL_CURSOR | |
FETCH NEXT FROM TAB_CURSOR | |
INTO @schema, | |
@table, | |
@object_id | |
END | |
CLOSE TAB_CURSOR | |
DEALLOCATE TAB_CURSOR |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment