Verwenden von text-, ntext- und image-Funktionen

Die folgenden Funktionen werden ausschließlich für Vorgänge mit Daten vom Typ text, ntext und image verwendet:

  • TEXTPTR gibt ein binary(16)-Objekt zurück, das einen Zeiger auf eine text-, ntext- oder image-Instanz enthält. Der Zeiger bleibt gültig, bis die Zeile gelöscht wird.

  • Die TEXTVALID-Funktion überprüft, ob ein angegebener Textzeiger gültig ist.

Textzeiger werden an die Transact-SQL-Anweisungen READTEXT, UPDATETEXT, WRITETEXT, PATINDEX, DATALENGTH und SET TEXTSIZE übergeben, mit denen Daten vom Typ text, ntext und image geändert werden.

In Transact-SQL-Anweisungen werden zum Verweisen auf Daten vom Typ text, ntext und image immer Zeiger oder die Adresse der Daten verwendet.

Das folgende Beispiel verwendet die TEXTPTR-Funktion, um in der pub_info-Tabelle der pubs-Datenbank die zur pub_id0736 gehörende text-Spalte (pr_info) zu finden. 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 an die READTEXT-Anweisung übergeben. Diese Anweisung gibt beginnend beim fünften Byte (Offset 4), 10 Bytes zurück.

HinweisHinweis

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

USE pubs
DECLARE @val varbinary(16)
SELECT @val = TEXTPTR(pr_info) FROM pub_info
WHERE pub_id = '0736'
READTEXT pub_info.pr_info @val 4 10

Dies ist das Resultset.

(1 row(s) affected)

pr_info
----------------------------------------
 is sample

Die explizite Konvertierung mithilfe der CAST-Funktion wird von text in varchar, von ntext in nvarchar und von image in varbinary oder binary unterstützt. Dabei werden jedoch text- oder image-Daten auf 8.000 Bytes und ntext-Daten auf 4.000 Zeichen (8.000 Bytes) abgeschnitten. Die Konvertierung von text, ntext oder image in andere Datentypen als die genannten wird weder implizit noch explizit unterstützt. Allerdings kann eine indirekte Konvertierung von text-, ntext,- oder image-Daten ausgeführt werden. Beispiel: CAST( CAST( text_column_name AS varchar(10) ) AS int ).