Text- und Bildfunktionen: TEXTPTR (Transact-SQL)
Gilt für: SQL Server Azure SQL Managed Instance
Gibt den Textzeigerwert zurück, der einer text-, ntext- oder image-Spalte im Format varbinary entspricht. Der abgerufene Textzeigerwert kann in READTEXT-, WRITETEXT- und UPDATE-Anweisungen verwendet werden.
Wichtig
Diese Funktion wird in einer zukünftigen Version von SQL Serverentfernt. Nutzen Sie diese Funktionen bei Neuentwicklungen nicht mehr, und planen Sie die Änderung von Anwendungen, die diese Funktion zurzeit verwenden. Es steht keine alternative Funktionalität zur Verfügung.
Transact-SQL-Syntaxkonventionen
Syntax
TEXTPTR ( column )
Argumente
column
Entspricht der text-, ntext- oder image-Spalte, die verwendet wird.
Rückgabetypen
varbinary
Bemerkungen
TEXTPTR gibt 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.
Sie können 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 setzen. 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 oder 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 der Daten in den text-, ntext- und image-Spalten 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
Sie müssen die pubs-Datenbank installieren, um die folgenden Beispiele auszuführen.
A. Verwenden von TEXTPTR
Im folgenden Beispiel wird die Funktion TEXTPTR
verwendet, um die image-Spalte logo
, die mit New Moon Books
verknüpft ist, in der pub_info
-Tabelle 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
Hier sehen Sie das Ergebnis.
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
Hier sehen Sie das Ergebnis.
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_id``0736
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
Hier sehen Sie das Ergebnis.
pr_info
-----------------------------------------------------------------------
is sample
(1 row(s) affected)
Weitere Informationen
DATALENGTH (Transact-SQL)
PATINDEX (Transact-SQL)
READTEXT (Transact-SQL)
SET TEXTSIZE (Transact-SQL)
Text- und Bildfunktionen (Transact-SQL)
UPDATETEXT (Transact-SQL)
WRITETEXT (Transact-SQL)