Utilizzo delle funzioni text, ntext e image

Le funzioni seguenti vengono utilizzate esclusivamente per operazioni su dati text, ntext e image:

  • TEXTPTR restituisce un oggetto binary(16) contenente un puntatore a un'istanza text, ntext o image. Il puntatore rimane valido fino a quando la riga non viene eliminata.

  • La funzione TEXTVALID verifica la validità di un determinato puntatore di testo.

I puntatori di testo vengono passati alle istruzioni READTEXT, UPDATETEXT, WRITETEXT, PATINDEX, DATALENGTH e SET TEXTSIZE Transact-SQL utilizzati per modificare dati text, ntext e image.

Nelle istruzioni Transact-SQL, i riferimenti ai dati text, ntext e image vengono sempre eseguiti mediante i puntatori o l'indirizzo dei dati.

Nell'esempio seguente viene utilizzata la funzione TEXTPTR per individuare la colonna text (pr_info), associata a pub_id0736, nella tabella pub_info del database pubs. Viene innanzitutto dichiarata la variabile locale @val. Il puntatore di testo, una stringa binaria lunga, viene quindi inserita in @val e specificata come parametro per l'istruzione READTEXT. Vengono restituiti 10 byte a partire dal quinto (offset di 4).

[!NOTA]

Per eseguire l'esempio è necessario installare il database pubs. Per informazioni sulle procedure di installazione del database pubs, vedere Download dei database di esempio Northwind e pubs.

USE pubs
DECLARE @val varbinary(16)
SELECT @val = TEXTPTR(pr_info) FROM pub_info
WHERE pub_id = '0736'
READTEXT pub_info.pr_info @val 4 10

Set di risultati:

(1 row(s) affected)

pr_info
----------------------------------------
 is sample

La conversione esplicita tramite la funzione CAST è supportata da text a varchar, da ntext a nvarchar e da image a varbinary, oppure binary, ma i dati text o image vengono troncati a 8.000 byte e i dati ntext vengono troncati a 4.000 caratteri (8.000 byte). La conversione di text, ntext o image in altri tipi di dati non è supportata, né implicitamente né esplicitamente. È tuttavia possibile eseguire la conversione indiretta dei dati text, ntext, o image. Ad esempio: CAST( CAST( text_column_name AS varchar(10) ) AS int ).