Sdílet prostřednictvím


Funkce textu a obrázků – TEXTPTR (Transact-SQL)

platí pro:SQL Serverazure SQL Managed Instance

Vrátí hodnotu textového ukazatele, která odpovídá sloupci textu, ntextu nebo obrázku ve formátu varbinary . Načtenou hodnotu textového ukazatele lze použít v příkazech READTEXT, WRITETEXT a UPDATETEXT.

Důležité

Tato funkce bude odebrána v budoucí verzi SQL Serveru. Nepoužívejte tuto funkci v nové vývojové práci a naplánujte úpravu aplikací, které tuto funkci aktuálně používají. Alternativní funkce nejsou k dispozici.

Transact-SQL konvence syntaxe

Syntaxe

TEXTPTR ( column )  

Arguments

sloupec
Je text, ntext nebo sloupec obrázku , který se použije.

Návratové typy

varbinary

Poznámky

U tabulek s textem v řádku vrátí funkce TEXTPTR popisovač pro zpracování textu. Platný textový ukazatel můžete získat i v případě, že je textová hodnota null.

U sloupců zobrazení nelze použít funkci TEXTPTR. Můžete ho použít jenom ve sloupcích tabulek. Chcete-li použít funkci TEXTPTR ve sloupci zobrazení, je nutné nastavit úroveň kompatibility na hodnotu 80 pomocí funkce ALTER DATABASE Compatibility Level. Pokud tabulka neobsahuje text v řádku a pokud text, ntext nebo sloupec obrázku nebyl inicializován příkazem UPDATETEXT, vrátí funkce TEXTPTR ukazatel null.

Pomocí funkce TEXTVALID otestujte, zda existuje textový ukazatel. Nelze použít funkci UPDATETEXT, WRITETEXT nebo READTEXT bez platného textového ukazatele.

Tyto funkce a příkazy jsou také užitečné při práci s textem, ntextem a obrazovými daty.

Funkce nebo příkaz Description
PATINDEX('%pattern%' ,expression) Vrátí pozici znaku zadaného řetězce znaků v textových nebo ntextových sloupcích.
DATALENGTH(výraz) Vrátí délku dat ve sloupcích textu, ntextu a obrázku .
NASTAVIT TEXTY Vrátí limit v bajtech textu, ntextu nebo obrázkových dat, která se mají vrátit příkazem SELECT.
SUBSTRING(text_column, začátek, délka) Vrátí řetězec varchar určený zadaným počátečním posunem a délkou. Délka by měla být menší než 8 kB.

Examples

Poznámka:

Pokud chcete spustit následující příklady, musíte nainstalovat databázi pubs .

A. Použití funkce TEXTPTR

Následující příklad používá TEXTPTR funkci k vyhledání sloupce logoobrázku přidruženého New Moon Bookspub_info k tabulce pubs databáze. Textový ukazatel se vloží do místní proměnné. @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. Použití funkce TEXTPTR s textem v řádku

V SYSTÉMU SQL Server musí být vložený textový ukazatel použit uvnitř transakce, jak je znázorněno v následujícím příkladu.

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. Vrácení textových dat

Následující příklad vybere pub_id sloupec a 16bajtů textový ukazatel pr_info sloupce z pub_info tabulky.

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

Tady je soubor výsledků.

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

Následující příklad ukazuje, jak vrátit první 8000 bajty textu bez použití TEXTPTR.

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

Tady je soubor výsledků.

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. Vrácení konkrétních textových dat

Následující příklad vyhledá text sloupec (pr_info) přidružený pub_id``0736 k pub_info tabulce pubs databáze. Nejprve deklaruje místní proměnnou @val. Textový ukazatel (dlouhý binární řetězec) se pak vloží @val a zadá jako parametr příkazu READTEXT . Vrátí se 10 bajtů počínaje pátým bajtem (posunem 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  

Tady je soubor výsledků.

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

Viz také

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