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 ).
Vedere anche