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.
Wichtig |
---|
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. |
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
Hinweis |
---|
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)