Share via


Cambiar datos ntext, text o image

Al reemplazar el valor completo, puede actualizar los valores ntext, text o image de una fila de las maneras siguientes:

  • Especifique cantidades relativamente cortas de datos en una instrucción UPDATE, de la misma forma que se especifican los datos char, nchar o binary.

  • Utilice WRITETEXT.

  • Las aplicaciones ADO pueden utilizar el método AppendChunk para especificar grandes cantidades de datos de tipo ntext, text o image.

  • Las aplicaciones OLE DB pueden utilizar la interfaz ISequentialStream para escribir nuevos valores de tipo ntext, text o image. Para obtener más información, consulte BLOB y objetos OLE.

  • Las aplicaciones ODBC pueden utilizar el formulario de datos en ejecución de SQLPutData para escribir nuevos valores de tipo ntext, text o image. Para obtener más información, vea Administrar columnas de texto e imagen.

  • Las aplicaciones de DB-Library pueden utilizar la función dbwritetext. Para obtener más información, vea Funciones de texto e imagen (Transact-SQL).

SQL Server también admite la actualización de sólo una parte de un valor de tipo ntext, text o image. En DB-Library, esto se puede hacer con la función dbupdatetext. El resto de las aplicaciones y scripts, lotes, procedimientos almacenados y desencadenadores de Transact-SQL pueden utilizar la instrucción UPDATETEXT para actualizar sólo una parte de una columna ntext, text o image.

El siguiente script de comandos muestra la utilización de UPDATETEXT con PATINDEX para buscar y reemplazar una cadena específica en un valor de tipo text:

USE Northwind
GO
CREATE TABLE TextParts (ColA INT PRIMARY KEY, ColB TEXT)
GO
INSERT INTO TextParts
   VALUES( 1,
           'Sample string START TAG Text to go END TAG Trailing text.')
GO
DECLARE @PtrVar BINARY(16)
DECLARE @InsertPos INT
DECLARE @DeleteLen INT

SELECT @PtrVar = TEXTPTR(ColB),
       @InsertPos = (PATINDEX('%START TAG%', ColB) + 9),
       @DeleteLen = (
                      PATINDEX('%END TAG%', ColB) -
                      ( PATINDEX('%START TAG%', ColB) + 9
                              + 2 /* allow for blanks */ )
                    )
FROM TextParts
WHERE ColA = 1

UPDATETEXT TextParts.ColB
           @PtrVar
           @InsertPos
           @DeleteLen
           WITH LOG
           'The new text'
GO

SELECT * FROM TextParts
GO

El conjunto de resultados de la instrucción SELECT final es:

ColA        ColB
----------- ------------------------------------------------------------
1           Sample string START TAG The new text END TAG Trailing text.