Dela via


Text- och bildfunktioner – TEXTPTR (Transact-SQL)

gäller för:SQL ServerAzure SQL Managed Instance

Returnerar det textpekarvärde som motsvarar en text-, ntext- eller bildkolumn i varbinärt format. Det hämtade textpekarvärdet kan användas i READTEXT-, WRITETEXT- och UPDATETEXT-instruktioner.

Viktigt!

Den här funktionen tas bort i en framtida version av SQL Server. Undvik att använda den här funktionen i nytt utvecklingsarbete och planera att ändra program som för närvarande använder den här funktionen. Alternativa funktioner är inte tillgängliga.

Transact-SQL syntaxkonventioner

Syntax

TEXTPTR ( column )  

Arguments

spalt
Är den text, ntext eller bildkolumn som ska användas.

Returtyper

varbinary

Anmärkningar

För tabeller med text på rad returnerar TEXTPTR ett handtag för den text som ska bearbetas. Du kan hämta en giltig textpekare även om textvärdet är null.

Du kan inte använda funktionen TEXTPTR i kolumner med vyer. Du kan bara använda den i kolumner med tabeller. Om du vill använda funktionen TEXTPTR i en kolumn i en vy måste du ange kompatibilitetsnivån till 80 med hjälp av ALTER DATABASE Compatibility Level. Om tabellen inte har text på rad, och om en text-, ntext- eller bildkolumn inte har initierats av en UPDATETEXT-instruktion, returnerar TEXTPTR en null-pekare.

Använd TEXTVALID för att testa om en textpekare finns. Du kan inte använda UPDATETEXT, WRITETEXT eller READTEXT utan en giltig textpekare.

Dessa funktioner och instruktioner är också användbara när du arbetar med text-, ntext- och bilddata .

Funktion eller instruktion Description
PATINDEX('%pattern%' ,expression) Returnerar teckenpositionen för en angiven teckensträng i text - eller ntextkolumner .
DATALENGTH(uttryck) Returnerar längden på data i text-, ntext- och bildkolumner .
ANGE TEXTSTORLEK Returnerar gränsen i byte för text-, ntext- eller bilddata som ska returneras med en SELECT-instruktion.
SUBSTRING(text_column, start, längd) Returnerar en varchar-sträng som anges av den angivna startförskjutningen och längden. Längden ska vara mindre än 8 kB.

Examples

Anmärkning

Om du vill köra följande exempel måste du installera pubs-databasen .

A. Använda TEXTPTR

I följande exempel används TEXTPTR funktionen för att hitta den bildkolumnlogo som är associerad med New Moon Books i pub_info databasens pubs tabell. Textpekaren placeras i en lokal variabel @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. Använda TEXTPTR med text i rad

I SQL Server måste textpekaren på rad användas i en transaktion, enligt följande exempel.

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. Returnerar textdata

I följande exempel väljs pub_id kolumnen och 16 bytes textpekare för pr_info kolumnen från pub_info tabellen.

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

Här är resultatet.

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

I följande exempel visas hur du returnerar de första 8000 byteen med text utan att använda TEXTPTR.

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

Här är resultatet.

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. Returnerar specifika textdata

I följande exempel hittar du kolumnen text (pr_info) som är associerad med pub_id``0736 i pub_info databasens pubs tabell. Den deklarerar först den lokala variabeln @val. Textpekaren (en lång binär sträng) placeras sedan i @val och tillhandahålls som en parameter till -instruktionen READTEXT . Detta returnerar 10 byte från och med den femte byte (förskjutning på 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  

Här är resultatet.

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

Se även

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