Exporter (0) Imprimer
Développer tout
Cet article a fait l'objet d'une traduction manuelle. Déplacez votre pointeur sur les phrases de l'article pour voir la version originale de ce texte. Informations supplémentaires.
Traduction
Source

PATINDEX (Transact-SQL)

Renvoie la position de début de la première occurrence d'un modèle dans une expression spécifiée, ou des zéros si le modèle est introuvable, pour tous les types de données texte et caractère valides.

S'applique à : SQL Server (SQL Server 2008 via la version actuelle, Base de données SQL Windows Azure (version initiale via la version actuelle.

Icône Lien de rubrique Conventions de la syntaxe Transact-SQL

PATINDEX ( '%pattern%' , expression )

pattern

Expression de caractères qui contient la séquence à rechercher. Les caractères génériques peuvent être utilisés ; toutefois, le caractère « % » doit précéder et suivre pattern (sauf lorsque vous recherchez les premiers ou derniers caractères). pattern est une expression de la catégorie de type de données chaîne de caractères. pattern est limité à 8 000 caractères.

expression

Est une expression, en général une colonne recherchée pour le modèle spécifié. expression appartient à la catégorie de type de données chaîne de caractères.

bigint si expression est du type de données varchar(max) ou nvarchar(max) ; sinon int.

Si pattern ou expression est NULL, PATINDEX retourne NULL.

PATINDEX exécute ses comparaisons en se basant sur le classement de l'entrée. Pour exécuter une comparaison selon un classement spécifié, vous pouvez utiliser COLLATE pour appliquer à l'entrée un classement explicite.

Caractères supplémentaires (paires de substitution)

Lors de l'utilisation de classements SC, la valeur de retour compte toutes les paires de substitution UTF-16 dans le paramètre expression comme un caractère unique. Pour plus d'informations, consultez Prise en charge d'Unicode et du classement.

0x0000 (char(0)) est un caractère indéfini dans les classements Windows et ne peut pas être inclus dans PATINDEX.

A.Utilisation d'un modèle avec la fonction PATINDEX

L'exemple suivant recherche la position de début du modèle ensure dans une ligne spécifique de la colonne DocumentSummary de la table Document dans la base de données AdventureWorks2012.

SELECT PATINDEX('%ensure%',DocumentSummary)
FROM Production.Document
WHERE DocumentNode = 0x7B40;
GO 

Voici l'ensemble des résultats.

-----------

64

(1 row(s) affected)

Si vous ne limitez pas le nombre de lignes à explorer à l'aide d'une clause WHERE, la requête renvoie toutes les lignes de la table et fournit des valeurs différentes de 0 pour les lignes contenant le modèle et des valeurs égales à 0 pour toutes les lignes qui ne le contiennent pas.

B.Utilisation de caractères génériques avec la fonction PATINDEX

L'exemple suivant utilise les caractères génériques % et _ pour rechercher la position de début du modèle 'en', suivi de tout caractère et 'ure' dans la chaîne spécifiée (l'index démarre à 1) :

  SELECT PATINDEX('%en_ure%', 'please ensure the door is locked');
 

Voici l'ensemble des résultats.

------------

8

PATINDEX fonctionne comme LIKE ; vous pouvez donc utiliser chacun des caractères génériques. Il n'est pas nécessaire d'ajouter le modèle entre les pourcentages. PATINDEX('a%', 'abc') retourne 1 et PATINDEX('%a', 'cba') retourne 3.

Contrairement à LIKE, PATINDEX retourne une position, comme le fait CHARINDEX.

C.Utilisation de COLLATE avec PATINDEX

L'exemple qui suit utilise la fonction COLLATE pour spécifier explicitement le classement de l'expression recherchée.

USE tempdb;
GO
SELECT PATINDEX ( '%ein%', 'Das ist ein Test'  COLLATE Latin1_General_BIN) ;
GO

D.Utilisation d'une variable pour spécifier le modèle

L'exemple suivant utilise une variable pour passer une valeur au paramètre pattern. Cet exemple utilise la base de données AdventureWorks2012.

DECLARE @MyValue varchar(10) = 'safety'; 
SELECT PATINDEX('%' + @MyValue + '%', DocumentSummary) 
FROM Production.Document
WHERE DocumentNode = 0x7B40;

Voici l'ensemble des résultats.

------------

22

Cela vous a-t-il été utile ?
(1500 caractères restants)
Merci pour vos suggestions.

Ajouts de la communauté

AJOUTER
Microsoft réalise une enquête en ligne pour recueillir votre opinion sur le site Web de MSDN. Si vous choisissez d’y participer, cette enquête en ligne vous sera présentée lorsque vous quitterez le site Web de MSDN.

Si vous souhaitez y participer,
Afficher:
© 2014 Microsoft