TEXTPTR (Transact-SQL)
Renvoie la valeur du pointeur de texte correspondant à une colonne 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 prochaine version de Microsoft 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é. La fonctionnalité alternative n'est pas disponible. |
Conventions de la syntaxe de Transact-SQL
Syntaxe
TEXTPTR ( column )
Arguments
column
Colonne text, ntext ou image à utiliser.
Notes
Dans SQL Server 2005, 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.
Dans SQL Server 2005, 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 colonnes de vue, vous devez spécifier un niveau de compatibilité de 80 à l'aide de sp_dbcmptlevel.
Si la table ne possède pas de texte en ligne, et si aucune colonne text, ntext ou image n'a été initialisée par une instruction UPDATETEXT, TEXTPTR renvoie un pointeur nul.
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 des colonnes text ou ntext. |
DATALENGTH(expression) |
Retourne la longueur de la chaîne dans des colonnes text, ntext et image. |
SET TEXTSIZE |
Retourne la limite, en octets, des données text, ntext ou image à renvoyer avec une instruction SELECT. |
SUBSTRING(text_column, start, length) |
Retourne une chaîne varchar spécifiée par le décalage de start et par length. La longueur doit être inférieure à 8 Ko. |
Types des valeurs renvoyées
varbinary
Exemples
Remarque : |
---|
Pour exécuter les exemples suivants, vous devez installer la base de données pubs. Pour plus d'informations sur l'installation de la bases de données pubs, consultez Téléchargement des exemples de bases de données Northwind et pubs. |
A. Utilisation de TEXTPTR
L'exemple qui suit utilise la fonction TEXTPTR
pour rechercher le logo
de la colonne image associé à la valeur 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 l'ensemble des 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 l'ensemble des 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 l'ensemble des résultats.
pr_info
-----------------------------------------------------------------------
is sample
(1 row(s) affected)
Voir aussi
Référence
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)