Condividi tramite


Modifica di dati di tipo ntext, text o image

Quando si sostituisce l'intero valore, è possibile aggiornare i valori di tipo ntext, text o image di una riga nei modi seguenti:

  • In un'istruzione UPDATE specificare quantità di dati relativamente ridotte in base alle stesse modalità seguite per i dati di tipo char, nchar o binary.
  • Utilizzare l'istruzione WRITETEXT.
  • Nelle applicazioni ADO è possibile utilizzare il metodo AppendChunk per specificare grandi quantità di dati di tipo ntext, text o image.
  • Nelle applicazioni OLE DB è possibile utilizzare l'interfaccia ISequentialStream per scrivere nuovi valori di tipo ntext, text o image. Per ulteriori informazioni, vedere BLOBs and OLE Objects.
  • Nelle applicazioni ODBC è possibile utilizzare la forma data-at-execution di SQLPutData per scrivere nuovi valori di tipo ntext, text o image. Per ulteriori informazioni, vedere Managing Text and Image Columns.
  • Nelle applicazioni DB-Library è possibile utilizzare la funzione dbwritetext. Per ulteriori informazioni, vedere Funzioni per i valori text e image (Transact-SQL).

In SQL Server 2005 è inoltre supportato l'aggiornamento parziale dei valori di tipo ntext, text o image. In DB-Library è possibile eseguire questa operazione tramite la funzione dbupdatetext. In tutte le altre applicazioni e negli script, nei batch, nelle stored procedure e nei trigger Transact-SQL è possibile utilizzare l'istruzione UPDATETEXT per aggiornare solo una parte di una colonna di tipo ntext, text o image.

Nello script seguente viene illustrato come utilizzare l'istruzione UPDATETEXT con PATINDEX per trovare una stringa specifica e sostituirla in un valore di 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

Di seguito viene riportato il set di risultati dell'istruzione SELECT finale:

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

Vedere anche

Concetti

Modifica di dati con l'istruzione UPDATE
Modifica dei dati tramite un cursore

Altre risorse

Download dei database di esempio Northwind e pubs

Guida in linea e informazioni

Assistenza su SQL Server 2005