-
search/replace NTEXT field sql server 2000
I would like to search and replace a NTEXT field in sql server 2000.
Does anybody know how to accomplish this?
Thank you.
-
Re: search/replace NTEXT field sql server 2000
This worked:
DECLARE
@TextPointer BINARY(16),
@TextIndex INT,
@oldString NVARCHAR(32), -- change to VARCHAR
@newString NVARCHAR(32), -- change to VARCHAR
@lenOldString INT,
@currentDataID INT;
SET @oldString = N'~GT~'; -- remove N
SET @newString = N'>'; -- remove N
IF CHARINDEX(@oldString, @newString) > 0
BEGIN
PRINT 'Quitting to avoid infinite loop.';
END
ELSE
BEGIN
SELECT 'Before replacement:';
SELECT ID, JTEXT FROM TABLE1;
SET @lenOldString = DATALENGTH(@oldString)/2; -- remove /2
DECLARE irows CURSOR
LOCAL FORWARD_ONLY STATIC READ_ONLY FOR
SELECT
ID
FROM
TABLE1
WHERE
PATINDEX('%'+@oldString+'%', JTEXT) > 0;
OPEN irows;
FETCH NEXT FROM irows INTO @currentDataID;
WHILE (@@FETCH_STATUS = 0)
BEGIN
SELECT
@TextPointer = TEXTPTR(JTEXT),
@TextIndex = PATINDEX('%'+@oldString+'%', JTEXT)
FROM
TABLE1
WHERE
ID = @currentDataID;
WHILE
(
SELECT
PATINDEX('%'+@oldString+'%', JTEXT)
FROM
TABLE1
WHERE
ID = @currentDataID
) > 0
BEGIN
SELECT
@TextIndex = PATINDEX('%'+@oldString+'%', JTEXT)-1
FROM
TABLE1
WHERE
ID = @currentDataID;
UPDATETEXT dbo.TABLE1.JTEXT @TextPointer @TextIndex
@lenOldString @newString;
END
FETCH NEXT FROM irows INTO @currentDataID;
END
CLOSE irows;
DEALLOCATE irows;
SELECT 'After replacement:';
SELECT ID, JTEXT FROM TABLE1;
END