Partager via


Modification de données ntext, text et image

Lorsque vous remplacez la valeur entière, vous pouvez mettre à jour les valeurs ntext, text ou image contenues dans une ligne en procédant comme suit :

  • Spécifiez des quantités relativement limitées de données dans une instruction UPDATE de la même manière que pour des données char, nchar ou binary.
  • Utilisez WRITETEXT.
  • Les applications ADO peuvent utiliser la méthode AppendChunk pour spécifier de grandes quantités de données ntext, text ou image.
  • Les applications OLE DB peuvent utiliser l'interface ISequentialStream pour écrire de nouvelles valeurs ntext, text ou image. Pour plus d'informations, consultez BLOBs and OLE Objects.
  • Les applications ODBC peuvent utiliser le formulaire data-at-execution de SQLPutData pour écrire de nouvelles valeurs ntext, text ou image. Pour plus d'informations, consultez Managing Text and Image Columns.
  • Les applications de la bibliothèque de bases de données peuvent utiliser la fonction dbwritetext. Pour plus d'informations, consultez Fonctions texte et image (Transact-SQL).

SQL Server 2005 prend aussi en charge la mise à jour d'une partie seulement d'une valeur ntext, text ou image. Dans la bibliothèque de bases de données, cette mise à jour partielle s'effectue par le biais de la fonction dbupdatetext. Toutes les autres applications, ainsi que les scripts, les lots, les procédures stockées et les déclencheurs Transact-SQL peuvent utiliser l'instruction UPDATETEXT pour effectuer une mise à jour partielle d'une colonne ntext, text ou image.

Le script suivant montre comment l'instruction UPDATETEXT est utilisée avec PATINDEX pour rechercher et remplacer une chaîne spécifique dans une valeur 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

L'ensemble de résultats de l'instruction SELECT finale est le suivant :

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

Voir aussi

Concepts

Modification des données au moyen de l'instruction UPDATE
Modification des données au moyen d'un curseur

Autres ressources

Téléchargement des exemples de bases de données Northwind et pubs

Aide et Informations

Assistance sur SQL Server 2005