Utilisation des fonctions text, ntext et image

Les fonctions suivantes sont utilisées exclusivement pour les opérations sur les données de type text, ntext et image :

  • TEXTPTR retourne un objet binary(16) qui contient un pointeur vers une instance text, ntext ou image. Le pointeur reste valide jusqu'à la suppression de la ligne.

  • La fonction TEXTVALID vérifie la validité d'un pointeur de texte spécifié.

Des pointeurs de texte sont envoyés aux instructions Transact-SQL READTEXT, UPDATETEXT, WRITETEXT, PATINDEX, DATALENGTH et SET TEXTSIZE utilisées pour modifier les données de type text, ntext et image.

Dans les instructions Transact-SQL, les données de type text, ntext et image sont toujours référencées par des pointeurs ou l'adresse des données.

Les exemples suivants utilisent la fonction TEXTPTR pour localiser la colonne text (pr_info) associée à pub_id0736 dans la table pub_info de la base de données pubs. Elle commence par déclarer la variable locale @val. Le pointeur de texte, une chaîne binaire longue, est placée dans @val et fournie sous la forme d'un paramètre à l'instruction READTEXT qui retourne 10 octets commençant au cinquième octet (décalage 4).

Notes

Pour exécuter cet exemple, vous devez installer la base de données pubs. Pour plus d'informations sur l'installation de la base de données pubs, consultez Téléchargement des exemples de bases de données Northwind et 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

Voici l'ensemble des résultats.

(1 row(s) affected)

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

Il est possible de convertir explicitement avec la fonction CAST des données de type text en type varchar, de type ntext en type nvarchar et de type image en typevarbinary ou binary, mais les données text ou image sont tronquées à 8000 octets et les données de type ntext à 4000 caractères (8000 octets). La conversion des données de type text, ntext ou image dans un autre type de données n'est pas prise en charge implicitement ou explicitement. Toutefois, il est possible de convertir indirectement les données de type text, ntext, ou image. Par exemple : CAST( CAST( text_column_name AS varchar(10) ) AS int ).