Fonctions texte et image - TEXTPTR (Transact-SQL)
S’applique à : SQL Server Azure SQL Managed Instance
Retourne la valeur du pointeur de texte qui correspond à une colonne de type text, ntext ou image au format varbinary. La valeur du pointeur de texte obtenue peut être utilisée dans les instructions READTEXT, WRITETEXT et UPDATETEXT.
Important
Cette fonctionnalité sera supprimée dans une version future de SQL Server. Évitez d'utiliser cette fonctionnalité dans de nouveaux travaux de développement, et prévoyez de modifier les applications qui utilisent actuellement cette fonctionnalité. Aucune fonctionnalité de remplacement n'est disponible.
Conventions de la syntaxe Transact-SQL
Syntaxe
TEXTPTR ( column )
Arguments
column
Colonne text, ntext ou image qui sera utilisée.
Types de retour
varbinary
Notes
Pour les tables avec du texte en ligne, TEXTPTR renvoie un descripteur pour le texte à traiter. Vous pouvez obtenir un pointeur de texte valide même lorsque la valeur du texte est nulle.
Vous ne pouvez pas utiliser la fonction TEXTPTR sur des colonnes de vues. Vous ne pouvez l'utiliser que sur des colonnes de tables. Pour utiliser la fonction TEXTPTR sur une colonne de vue, vous devez spécifier un niveau de compatibilité égal à 80 à l’aide du niveau de compatibilité ALTER DATABASE. Si la table ne possède pas de texte en ligne et si aucune colonne text, ntext ni image n’a été initialisée par une instruction UPDATETEXT, la fonction TEXTPTR retourne un pointeur null.
Utilisez TEXTVALID pour vérifier l'existence d'un pointeur de texte. Vous ne pouvez pas utiliser UPDATETEXT, WRITETEXT ou READTEXT sans pointeur de texte valide.
Ces fonctions et instructions sont également utiles lorsque vous travaillez avec des données text, ntext et image.
Fonction ou instruction | Description |
---|---|
PATINDEX('%pattern%' , expression) | Retourne la position d’un caractère dans la chaîne de caractères spécifiée dans les colonnes text et ntext. |
DATALENGTH(expression) | Retourne la longueur des données dans les colonnes de type text, ntext et image. |
SET TEXTSIZE | Retourne la limite, en octets, des données text, ntext ou image à retourner avec une instruction SELECT. |
SUBSTRING(text_column, start, length) | Retourne une chaîne varchar spécifiée par le décalage start et par la longueur length. La longueur doit être inférieure à 8 Ko. |
Exemples
Notes
Pour exécuter les exemples suivants, vous devez installer la base de données pubs.
R. Utilisation de TEXTPTR
L’exemple qui suit utilise la fonction TEXTPTR
pour rechercher le logo
de la colonne image associé à New Moon Books
dans la table pub_info
de la base de données pubs
. Le pointeur de texte identifie la variable locale @ptrval.
.
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. Utilisation de TEXTPTR avec du texte dans la ligne
Dans SQL Server, le pointeur de texte dans la ligne doit être utilisé au sein d'une transaction, comme le montre l'exemple suivant.
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. Renvoi des données texte
Cet exemple sélectionne la colonne pub_id
et le pointeur de texte sur 16 octets de la colonne pr_info
dans la table pub_info
.
USE pubs;
GO
SELECT pub_id, TEXTPTR(pr_info)
FROM pub_info
ORDER BY pub_id;
GO
Voici le jeu de résultats.
pub_id
------ ----------------------------------
0736 0x6c0000000000feffb801000001000100
0877 0x6d0000000000feffb801000001000300
1389 0x6e0000000000feffb801000001000500
1622 0x700000000000feffb801000001000900
1756 0x710000000000feffb801000001000b00
9901 0x720000000000feffb801000001000d00
9952 0x6f0000000000feffb801000001000700
9999 0x730000000000feffb801000001000f00
(8 row(s) affected)
Cet exemple indique comment retourner les 8000
premiers octets de texte sans utiliser TEXTPTR.
USE pubs;
GO
SET TEXTSIZE 8000;
SELECT pub_id, pr_info
FROM pub_info
ORDER BY pub_id;
GO
Voici le jeu de résultats.
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. Renvoi des données texte spécifiques
L’exemple qui suit localise la colonne text
(pr_info
) associée à pub_id``0736
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 de type long) est ensuite placé dans @val
, puis passé comme paramètre à l'instruction READTEXT
. Cette opération renvoie 10 octets à partir du cinquième octet (décalage de 4 octets).
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
Voici le jeu de résultats.
pr_info
-----------------------------------------------------------------------
is sample
(1 row(s) affected)
Voir aussi
DATALENGTH (Transact-SQL)
PATINDEX (Transact-SQL)
READTEXT (Transact-SQL)
SET TEXTSIZE (Transact-SQL)
Fonctions texte et image (Transact-SQL)
UPDATETEXT (Transact-SQL)
WRITETEXT (Transact-SQL)