+ Reply to Thread
Results 1 to 2 of 2

search/replace NTEXT field sql server 2000

  1. 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.


  2. 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


+ Reply to Thread