TEXTPTR (Transact-SQL)

Gibt den Textzeigerwert, der einer Spalte vom Typ text, ntext oder image entspricht, im Format varbinary zurück. Der abgerufene Textzeigerwert kann in READTEXT-, WRITETEXT- und UPDATE-Anweisungen verwendet werden.

Wichtiger HinweisWichtig

Diese Funktion wird in zukünftigen Versionen von Microsoft SQL Server nicht mehr bereitgestellt. Verwenden Sie diese Funktion beim Entwickeln neuer Anwendungen nicht, und planen Sie das Ändern von Anwendungen, in denen es zurzeit verwendet wird. Alternative Funktionen sind nicht verfügbar.

Themenlink (Symbol)Transact-SQL-Syntaxkonventionen

Syntax

TEXTPTR ( column )

Argumente

  • column
    Die Spalte vom Typ text, ntext oder image, die verwendet werden soll.

Rückgabetypen

varbinary

Hinweise

In SQL Server 2005 und späteren Versionen gibt TEXTPTR für Tabellen mit Text in Zeilen ein Handle für den zu verarbeitenden Text zurück. Sie können selbst dann einen gültigen Textzeiger erhalten, wenn der Textwert gleich NULL ist.

In SQL Server 2005 und späteren Versionen können Sie die Funktion TEXTPTR nicht für Spalten von Sichten verwenden. Sie können sie nur für Spalten von Tabellen verwenden. Wenn Sie die Funktion TEXTPTR für eine Spalte einer Sicht verwenden möchten, müssen Sie den Kompatibilitätsgrad mithilfe von ALTER DATABASE Compatibility Level auf 80 festlegen. Wenn eine Tabelle keinen Text in Zeilen hat und wenn eine text-, ntext- oder image-Spalte nicht mit einer UPDATETEXT-Anweisung initialisiert wurde, gibt TEXTPTR einen NULL-Zeiger zurück.

Verwenden Sie TEXTVALID, um zu testen, ob ein Textzeiger vorhanden ist. Sie können UPDATETEXT, WRITETEXT oder READTEXT nicht ohne einen gültigen Textzeiger verwenden.

Diese Funktionen und Anweisungen sind auch bei Daten vom Typ text, ntext und image hilfreich.

Funktion oder Anweisung

Beschreibung

PATINDEX('%pattern%' , expression)

Gibt die Zeichenposition einer angegebenen Zeichenfolge in Spalten von Typ text oder ntext zurück.

DATALENGTH(expression)

Gibt die Länge von Daten in Spalten vom Typ text, ntext und image zurück.

SET TEXTSIZE

Gibt das Limit der text-, ntext- oder image-Daten, die von einer SELECT-Anweisung zurückgegeben werden sollen, in Byte zurück.

SUBSTRING(text_column, start, length)

Gibt eine varchar-Zeichenfolge zurück, die durch den Offset start und length angegeben wird. Die Länge sollte kleiner als 8 KB sein.

Beispiele

HinweisHinweis

Um die folgenden Beispiele auszuführen, müssen Sie die pubs-Datenbank installieren. Informationen zum Installieren der pubs-Datenbank finden Sie unter Herunterladen der Beispieldatenbanken Northwind und pubs.

A. Verwenden von TEXTPTR

Im folgenden Beispiel wird die Funktion TEXTPTR verwendet, um die Spalte imagelogo, die mit New Moon Books verknüpft ist, in der Tabelle pub_info der pubs-Datenbank zu suchen. Der Textzeiger wird in der lokalen Variablen @ptrval. abgelegt.

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. Verwenden von TEXTPTR mit Text in Zeilen

In SQL Server muss der Textzeiger in Zeilen innerhalb einer Transaktion verwendet werden, wie im folgenden Beispiel gezeigt.

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. Zurückgeben von Textdaten

Im folgenden Beispiel wird die Spalte pub_id und der 16 Byte lange Textzeiger der Spalte pr_info aus der Tabelle pub_info ausgewählt.

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

Dies ist das Resultset.

pub_id                                    
------ ---------------------------------- 
0736   0x6c0000000000feffb801000001000100 
0877   0x6d0000000000feffb801000001000300 
1389   0x6e0000000000feffb801000001000500 
1622   0x700000000000feffb801000001000900 
1756   0x710000000000feffb801000001000b00 
9901   0x720000000000feffb801000001000d00 
9952   0x6f0000000000feffb801000001000700 
9999   0x730000000000feffb801000001000f00 

(8 row(s) affected)

Das folgende Beispiel zeigt, wie die ersten 8000 Byte Text ohne Verwendung von TEXTPTR zurückgegeben werden.

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

Dies ist das Resultset.

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. Zurückgeben von bestimmten Textdaten

Im folgenden Beispiel wird die Spalte text (pr_info), die mit pub_id0736 verknüpft ist, in der Tabelle pub_info der pubs-Datenbank gesucht. Es wird zunächst die lokale Variable @val deklariert. Der Textzeiger (eine lange Binärzeichenfolge) wird dann in der Variablen @val abgelegt und als Parameter der READTEXT-Anweisung übergeben. Diese Anweisung gibt beginnend beim fünften Byte (Offset 4) 10 Byte zurück.

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

Dies ist das Resultset.

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