Udostępnij za pomocą


Funkcje tekstu i obrazu — TEXTPTR (Transact-SQL)

Dotyczy:SQL ServerAzure SQL Managed Instance

Zwraca wartość wskaźnika tekstowego odpowiadającą kolumnie tekstowej, ntekstowej lub obrazowej w formacie varbinary . Pobrana wartość wskaźnika tekstowego może być używana w instrukcjach READTEXT, WRITETEXT i UPDATETEXT.

Ważne

Ta funkcja zostanie usunięta w przyszłej wersji programu SQL Server. Unikaj używania tej funkcji w nowych pracach programistycznych i zaplanuj modyfikowanie aplikacji, które obecnie korzystają z tej funkcji. Funkcja alternatywna jest niedostępna.

Transact-SQL konwencje składni

Składnia

TEXTPTR ( column )  

Arguments

kolumna
To tekst, ntekst lub kolumna obrazu , która będzie używana.

Typy zwracane

varbinary

Uwagi

W przypadku tabel z tekstem w wierszu funkcja TEXTPTR zwraca uchwyt do przetworzenia tekstu. Można uzyskać prawidłowy wskaźnik tekstowy, nawet jeśli wartość tekstowa ma wartość null.

Nie można użyć funkcji TEXTPTR w kolumnach widoków. Można go używać tylko w kolumnach tabel. Aby użyć funkcji TEXTPTR w kolumnie widoku, należy ustawić poziom zgodności na 80 przy użyciu poziomu zgodności ALTER DATABASE. Jeśli tabela nie ma tekstu w wierszu, a tekst, ntekst lub kolumna obrazu nie została zainicjowana przez instrukcję UPDATETEXT, funkcja TEXTPTR zwraca wskaźnik o wartości null.

Użyj parametru TEXTVALID, aby sprawdzić, czy istnieje wskaźnik tekstu. Nie można użyć kontrolki UPDATETEXT, WRITETEXT lub READTEXT bez prawidłowego wskaźnika tekstowego.

Te funkcje i instrukcje są również przydatne podczas pracy z danymi tekstowymi, ntekstowymi i obrazami .

Funkcja lub instrukcja Description
PATINDEX('%pattern%' ,expression) Zwraca położenie znaku określonego ciągu znaków w kolumnach tekstowych lub ntekstowych .
DATALENGTH(wyrażenie) Zwraca długość danych w kolumnach tekstowych, ntekstowych i obrazów .
USTAW ROZMIAR TEKSTU Zwraca limit w bajtach tekstu, ntekstu lub danych obrazu , które mają być zwracane za pomocą instrukcji SELECT.
PODCIĄG (text_column, początek, długość) Zwraca ciąg varchar określony przez określone przesunięcie i długośćrozpoczęcia. Długość powinna być mniejsza niż 8 KB.

Przykłady

Uwaga / Notatka

Aby uruchomić następujące przykłady, należy zainstalować bazę danych pubs .

A. Korzystanie z textPTR

W poniższym przykładzie użyto TEXTPTR funkcji do zlokalizowania kolumny logoobrazu skojarzonej pub_info z New Moon Books tabelą pubs bazy danych. Wskaźnik tekstu jest umieszczany w zmiennej lokalnej @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. Używanie kontrolki TEXTPTR z tekstem w wierszu

W programie SQL Server wskaźnik tekstowy w wierszu musi być używany wewnątrz transakcji, jak pokazano w poniższym przykładzie.

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. Zwracanie danych tekstowych

Poniższy przykład wybiera kolumnę pub_id i 16-bajtowy wskaźnik pr_info tekstowy kolumny z pub_info tabeli.

USE pubs;  
GO  
SELECT pub_id, TEXTPTR(pr_info)  
FROM pub_info  
ORDER BY pub_id;  
GO  

Oto zestaw wyników.

pub_id                                      
------ ----------------------------------   
0736   0x6c0000000000feffb801000001000100   
0877   0x6d0000000000feffb801000001000300   
1389   0x6e0000000000feffb801000001000500   
1622   0x700000000000feffb801000001000900   
1756   0x710000000000feffb801000001000b00   
9901   0x720000000000feffb801000001000d00   
9952   0x6f0000000000feffb801000001000700   
9999   0x730000000000feffb801000001000f00   
  
(8 row(s) affected)  

W poniższym przykładzie pokazano, jak zwrócić pierwsze 8000 bajty tekstu bez użycia metody TEXTPTR.

USE pubs;  
GO  
SET TEXTSIZE 8000;  
SELECT pub_id, pr_info  
FROM pub_info  
ORDER BY pub_id;  
GO  

Oto zestaw wyników.

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. Zwracanie określonych danych tekstowych

W poniższym przykładzie znajduje się kolumna text (pr_info) skojarzona z pub_id``0736 tabelą pub_infopubs bazy danych. Najpierw deklaruje zmienną @vallokalną . Wskaźnik tekstowy (długi ciąg binarny) jest następnie umieszczany w @val instrukcji READTEXT i dostarczany jako parametr. Zwraca to 10 bajtów rozpoczynających się od piątego bajtu (przesunięcie 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  

Oto zestaw wyników.

pr_info                                                                                                                                                                                                                                                           
-----------------------------------------------------------------------  
 is sample  
(1 row(s) affected)  

Zobacz też

DATALENGTH (Transact-SQL)
PATINDEX (Transact-SQL)
READTEXT (Transact-SQL)
SET TEXTSIZE (Transact-SQL)
UPDATETEXT (Transact-SQL)
WRITETEXT (Transact-SQL)