Fungsi Teks dan Gambar - TEXTPTR (Transact-SQL)

Berlaku untuk:SQL ServerAzure SQL Managed Instance

Mengembalikan nilai penunjuk teks yang sesuai dengan kolom teks, ntext, atau gambar dalam format varbinary . Nilai penunjuk teks yang diambil dapat digunakan dalam pernyataan READTEXT, WRITETEXT, dan UPDATETEXT.

Penting

Fitur ini akan dihapus dalam versi SQL Server yang akan datang. Hindari menggunakan fitur ini dalam pekerjaan pengembangan baru, dan rencanakan untuk memodifikasi aplikasi yang saat ini menggunakan fitur ini. Fungsionalitas alternatif tidak tersedia.

Konvensi sintaks transact-SQL

Sintaksis

TEXTPTR ( column )  

Catatan

Untuk melihat sintaks Transact-SQL untuk SQL Server 2014 (12.x) dan versi yang lebih lama, lihat Dokumentasi versi sebelumnya.

Argumen

column
Adalah kolom teks, ntext, atau gambar yang akan digunakan.

Jenis Kembalian

varbinary

Keterangan

Untuk tabel dengan teks dalam baris, TEXTPTR mengembalikan handel untuk teks yang akan diproses. Anda bisa mendapatkan penunjuk teks yang valid meskipun nilai teks null.

Anda tidak dapat menggunakan fungsi TEXTPTR pada kolom tampilan. Anda hanya dapat menggunakannya pada kolom tabel. Untuk menggunakan fungsi TEXTPTR pada kolom tampilan, Anda harus mengatur tingkat kompatibilitas ke 80 dengan menggunakan Tingkat Kompatibilitas ALTER DATABASE. Jika tabel tidak memiliki teks dalam baris, dan jika kolom teks, ntext, atau gambar belum diinisialisasi oleh pernyataan UPDATETEXT, TEXTPTR mengembalikan pointer null.

Gunakan TEXTVALID untuk menguji apakah penunjuk teks ada. Anda tidak dapat menggunakan UPDATETEXT, WRITETEXT, atau READTEXT tanpa penunjuk teks yang valid.

Fungsi dan pernyataan ini juga berguna saat Anda bekerja dengan data teks, ntext, dan gambar .

Fungsi atau pernyataan Deskripsi
PATINDEX('%pattern%' ,expression) Mengembalikan posisi karakter string karakter tertentu dalam kolom teks atau ntext .
DATALENGTH(ekspresi) Mengembalikan panjang data dalam kolom teks, ntext, dan gambar .
SET TEXTSIZE Mengembalikan batas, dalam byte, dari data teks, ntext, atau gambar yang akan dikembalikan dengan pernyataan SELECT.
SUBSTRING(text_column, start, length) Mengembalikan string varchar yang ditentukan oleh offset dan panjang mulai yang ditentukan. Panjangnya harus kurang dari 8 KB.

Contoh

Catatan

Untuk menjalankan contoh berikut, Anda harus menginstal database pub .

J. Menggunakan TEXTPTR

Contoh berikut menggunakan TEXTPTR fungsi untuk menemukan kolom logo gambar yang terkait dengan New Moon Books dalam pub_info tabel pubs database. Penunjuk teks dimasukkan ke dalam variabel lokal @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. Menggunakan TEXTPTR dengan teks dalam baris

Di SQL Server, penunjuk teks dalam baris harus digunakan di dalam transaksi, seperti yang ditunjukkan dalam contoh berikut.

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. Mengembalikan data teks

Contoh berikut memilih pub_id kolom dan penunjuk pr_info teks 16 byte kolom dari pub_info tabel.

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

Berikut adalah hasil yang ditetapkan.

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

Contoh berikut menunjukkan cara mengembalikan byte teks pertama 8000 tanpa menggunakan TEXTPTR.

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

Berikut adalah hasil yang ditetapkan.

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. Mengembalikan data teks tertentu

Contoh berikut menemukan kolom () yang text terkait dengan pub_id``0736 dalam pub_info tabel pubs database.pr_info Ini pertama-tama mendeklarasikan variabel @vallokal . Penunjuk teks (string biner panjang) kemudian dimasukkan ke dalam @val dan disediakan sebagai parameter ke READTEXT pernyataan. Ini mengembalikan 10 byte yang dimulai pada byte kelima (offset 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  

Berikut adalah hasil yang ditetapkan.

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

Lihat Juga

DATALENGTH (Transact-SQL)
PATINDEX (Transact-SQL)
READTEXT (Transact-SQL)
MENGATUR TEXTSIZE (Transact-SQL)
Fungsi Teks dan Gambar (Transact-SQL)
UPDATETEXT (Transact-SQL)
WRITETEXT (T-SQL)