Funzioni per i valori text e image - TEXTPTR (Transact-SQL)
Si applica a: SQL Server Istanza gestita di SQL di Azure
Restituisce il valore del puntatore di testo corrispondente a una colonna di tipo text, ntext o image in formato varbinary. È possibile utilizzare il valore del puntatore di testo recuperato nelle istruzioni READTEXT, WRITETEXT e UPDATETEXT.
Importante
Questa funzionalità verrà rimossa nelle versioni future di SQL Server. Evitare di usare questa funzionalità in un nuovo progetto di sviluppo e prevedere interventi di modifica nelle applicazioni in cui è attualmente implementata. La funzionalità alternativa non è disponibile.
Convenzioni relative alla sintassi Transact-SQL
Sintassi
TEXTPTR ( column )
Argomenti
column
Colonna text, ntext o image che verrà usata.
Tipi restituiti
varbinary
Osservazioni:
Per le tabelle contenenti testo nelle righe, l'istruzione TEXTPTR restituisce un handle per il testo da elaborare. È possibile ottenere un puntatore di testo valido anche se il valore di testo è Null.
Non è possibile utilizzare la funzione TEXTPTR sulle colonne di viste, ma solo sulle colonne di tabelle. Per usare la funzione TEXTPTR su una colonna di una vista, è necessario impostare il livello di compatibilità su 80 tramite il livello di compatibilità di ALTER DATABASE. Se una tabella non contiene testo all'interno di righe e se una colonna di tipo text, ntext o image non è stata inizializzata tramite un'istruzione UPDATETEXT, TEXTPTR restituisce un puntatore Null.
Utilizzare TEXTVALID per verificare la presenza di un puntatore di testo. Non è possibile utilizzare UPDATETEXT, WRITETEXT o READTEXT senza un puntatore di testo valido.
Queste funzioni e istruzioni sono utili anche quando si usano dati di tipo text, ntext e image.
Funzione o istruzione | Descrizione |
---|---|
PATINDEX('%pattern%' , expression) | Restituisce la posizione dei caratteri di una determinata stringa di caratteri nelle colonne di tipo text o ntext. |
DATALENGTH(expression) | Restituisce la lunghezza dei dati nelle colonne text, ntext e image. |
SET TEXTSIZE | Restituisce il limite in byte dei dati di tipo text, ntext o image da restituire con un'istruzione SELECT. |
SUBSTRING(text_column, start, length) | Restituisce una stringa varchar determinata dall'offset start specificato e da length. La lunghezza massima è di 8 KB. |
Esempi
Nota
Per eseguire gli esempi seguenti è necessario installare il database pubs.
R. Utilizzo di TEXTPTR
Nell'esempio seguente viene usata la funzione TEXTPTR
per trovare la colonna imagelogo
associata a New Moon Books
nella tabella pub_info
del database pubs
. Il puntatore di testo è inserito in una variabile locale @ptrval.
USE pubs;
GO
DECLARE @ptrval VARBINARY(16);
SELECT @ptrval = TEXTPTR(logo)
FROM pub_info pr, publishers p
WHERE p.pub_id = pr.pub_id
AND p.pub_name = 'New Moon Books';
GO
B. Utilizzo di TEXTPTR con testo all'interno di righe
In SQL Server il puntatore di testo all'interno di righe deve essere utilizzato all'interno di una transazione, come illustrato nell'esempio seguente.
CREATE TABLE t1 (c1 INT, c2 TEXT);
EXEC sp_tableoption 't1', 'text in row', 'on';
INSERT t1 VALUES ('1', 'This is text.');
GO
BEGIN TRAN;
DECLARE @ptrval VARBINARY(16);
SELECT @ptrval = TEXTPTR(c2)
FROM t1
WHERE c1 = 1;
READTEXT t1.c2 @ptrval 0 1;
COMMIT;
C. Restituzione di dati in formato testo
Nell'esempio seguente la colonna pub_id
e il puntatore di testo a 16 byte della colonna pr_info
vengono selezionati nella tabella pub_info
.
USE pubs;
GO
SELECT pub_id, TEXTPTR(pr_info)
FROM pub_info
ORDER BY pub_id;
GO
Il set di risultati è il seguente.
pub_id
------ ----------------------------------
0736 0x6c0000000000feffb801000001000100
0877 0x6d0000000000feffb801000001000300
1389 0x6e0000000000feffb801000001000500
1622 0x700000000000feffb801000001000900
1756 0x710000000000feffb801000001000b00
9901 0x720000000000feffb801000001000d00
9952 0x6f0000000000feffb801000001000700
9999 0x730000000000feffb801000001000f00
(8 row(s) affected)
Nell'esempio seguente viene illustrato come restituire i primi 8000
byte di testo senza utilizzare TEXTPTR.
USE pubs;
GO
SET TEXTSIZE 8000;
SELECT pub_id, pr_info
FROM pub_info
ORDER BY pub_id;
GO
Il set di risultati è il seguente.
pub_id pr_info
------ -----------------------------------------------------------------
0736 New Moon Books (NMB) has just released another top ten publication. With the latest publication this makes NMB the hottest new publisher of the year!
0877 This is sample text data for Binnet & Hardley, publisher 0877 in the pubs database. Binnet & Hardley is located in Washington, D.C.
This is sample text data for Binnet & Hardley, publisher 0877 in the pubs database. Binnet & Hardley is located in Washi
1389 This is sample text data for Algodata Infosystems, publisher 1389 in the pubs database. Algodata Infosystems is located in Berkeley, California.
9999 This is sample text data for Lucerne Publishing, publisher 9999 in the pubs database. Lucerne publishing is located in Paris, France.
This is sample text data for Lucerne Publishing, publisher 9999 in the pubs database. Lucerne publishing is located in
(8 row(s) affected)
D. Restituzione di dati specifici in formato testo
Nell'esempio seguente viene trovata la colonna text
(pr_info
) associata a pub_id``0736
nella tabella pub_info
del database pubs
. Viene innanzitutto dichiarata la variabile locale @val
. Il puntatore di testo, ovvero una stringa di dati binari di tipo Long, viene quindi inserito in @val
e passato come parametro all'istruzione READTEXT
, che restituisce 10 byte a partire dal quinto byte (offset pari a 4).
USE pubs;
GO
DECLARE @val VARBINARY(16);
SELECT @val = TEXTPTR(pr_info)
FROM pub_info
WHERE pub_id = '0736';
READTEXT pub_info.pr_info @val 4 10;
GO
Il set di risultati è il seguente.
pr_info
-----------------------------------------------------------------------
is sample
(1 row(s) affected)
Vedi anche
DATALENGTH (Transact-SQL)
PATINDEX (Transact-SQL)
READTEXT (Transact-SQL)
SET TEXTSIZE (Transact-SQL)
Funzioni per i valori text e image (Transact-SQL)
UPDATETEXT (Transact-SQL)
WRITETEXT (Transact-SQL)