Aracılığıyla paylaş


Metin ve Görüntü İşlevleri - TEXTPTR (Transact-SQL)

Şunlar için geçerlidir:SQL ServerAzure SQL Yönetilen Örneği

Varbinary biçimindeki bir metin, ntext veya görüntü sütununa karşılık gelen metin işaretçisi değerini döndürür. Alınan metin işaretçisi değeri READTEXT, WRITETEXT ve UPDATETEXT deyimlerinde kullanılabilir.

Önemli

Bu özellik, SQL Server'ın gelecek bir sürümünde kaldırılacaktır. Bu özelliği yeni geliştirme çalışmalarında kullanmaktan kaçının ve şu anda bu özelliği kullanan uygulamaları değiştirmeyi planlayın. Alternatif işlevsellik kullanılamaz.

Transact-SQL söz dizimi kuralları

Sözdizimi

TEXTPTR ( column )  

Arguments

sütun
Kullanılacak metin, ntext veya görüntü sütunudur.

Dönüş Türleri

varbinary

Açıklamalar

Satır içi metin içeren tablolar için METNEÇEVİr işlevi, işlenecek metnin tutamacını döndürür. Metin değeri null olsa bile geçerli bir metin işaretçisi elde edebilirsiniz.

TEXTPTR işlevini görünüm sütunlarında kullanamazsınız. Bunu yalnızca tablo sütunlarında kullanabilirsiniz. TEXTPTR işlevini bir görünümün sütununda kullanmak için ALTER DATABASE Uyumluluk Düzeyi'ni kullanarak uyumluluk düzeyini 80 olarak ayarlamanız gerekir. Tabloda satır içi metin yoksa ve bir metin, ntext veya görüntü sütunu UPDATETEXT deyimi tarafından başlatılmadıysa, METNEÇEVİr işlevi null bir işaretçi döndürür.

Metin işaretçisi olup olmadığını test etmek için TEXTVALID kullanın. Geçerli bir metin işaretçisi olmadan UPDATETEXT, WRITETEXT veya READTEXT kullanamazsınız.

Bu işlevler ve deyimler metin, ntext ve görüntü verileriyle çalışırken de kullanışlıdır.

İşlev veya deyim Description
PATINDEX('%pattern%' ,expression) Metin veyantext sütunlarında belirtilen karakter dizesinin karakter konumunu döndürür.
DATALENGTH(ifade) Metin, ntext ve görüntü sütunlarındaki verilerin uzunluğunu döndürür.
METNEÇEVİr AYARLA SELECT deyimiyle döndürülecek metin, ntext veya görüntü verilerinin bayt cinsinden sınırını döndürür.
ALT DIZE(text_column, başlangıç, uzunluk) Belirtilen başlangıç uzaklığı ve uzunluğu tarafından belirtilen bir varchar dizesi döndürür. Uzunluk 8 KB'tan az olmalıdır.

Örnekler

Uyarı

Aşağıdaki örnekleri çalıştırmak için pubs veritabanını yüklemeniz gerekir.

A. TEXTPTR kullanma

Aşağıdaki örnek, veritabanının TEXTPTR tablosunda pubs ilişkili New Moon Bookspub_infogörüntü sütununu logo bulmak için işlevini kullanır. Metin işaretçisi yerel bir değişkene yerleştirilir @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. Satır içi metinle TEXTPTR kullanma

SQL Server'da, aşağıdaki örnekte gösterildiği gibi satır içi metin işaretçisi bir işlemin içinde kullanılmalıdır.

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. Metin verilerini döndürme

Aşağıdaki örnek, tablodan pub_id sütunun sütununu ve 16 baytlık metin işaretçisini pr_infopub_info seçer.

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

Sonuç kümesi aşağıdadır.

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

Aşağıdaki örnekte TEXTPTR kullanılmadan metnin ilk 8000 baytlarının nasıl döndürüleceği gösterilmektedir.

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

Sonuç kümesi aşağıdadır.

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. Belirli metin verilerini döndürme

Aşağıdaki örnek, veritabanının text tablosunda pubs ilişkili pub_id``0736pub_info sütunu (pr_info) bulur. İlk olarak yerel değişkenini @valbildirir. Daha sonra metin işaretçisi (uzun ikili dize) içine @val konur ve deyiminin READTEXT parametresi olarak sağlanır. Bu, beşinci bayt (4 uzaklığı) ile başlayan 10 bayt döndürür.

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  

Sonuç kümesi aşağıdadır.

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

Ayrıca Bkz.

DATALENGTH (Transact-SQL)
PATINDEX (Transact-SQL)
READTEXT (Transact-SQL)
METNEÇEVİr AYARLA (Transact-SQL)
UPDATETEXT (Transact-SQL)
WRITETEXT (Transact-SQL)