Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Gilt für:SQL Server
Azure SQL-Datenbank
Verwaltete Azure SQL-Instanz
Azure Synapse Analytics
Analytics Platform System (PDW)
SQL-Analyseendpunkt in Microsoft Fabric
Lagerhaus in Microsoft Fabric
SQL-Datenbank in Microsoft Fabric
Gibt die Anfangsposition des ersten Vorkommens eines Musters in einem angegebenen Ausdruck oder null zurück, wenn das Muster nicht gefunden wird, für alle gültigen Text- und Zeichendatentypen.
Transact-SQL-Syntaxkonventionen
Syntax
PATINDEX ( '%pattern%' , expression )
Arguments
pattern
Ein Zeichenausdruck, der die zu findende Sequenz enthält. Wildcard-Charaktere können verwendet werden; Allerdings muss der % Charakter vor dem Muster erscheinen und dem folgen (außer wenn du nach dem ersten oder letzten Zeichen suchst). Pattern ist ein Ausdruck der Datentypkategorie der Zeichenzeichenketten. Das Muster ist auf 8.000 Zeichen begrenzt.
Note
Während herkömmliche reguläre Ausdrücke in SQL Server 2022 (16.x) und früheren Versionen nicht nativ unterstützt werden, können ähnliche komplexe Mustervergleiche mithilfe verschiedener Wildcardausdrücke erreicht werden. Siehe die Dokumentation zu String-Operatoren für weitere Details zur Wildcard-Syntax. Informationen zu regulären Ausdrucksfunktionen in SQL Server 2025 (17.x) finden Sie unter Reguläre Ausdrucksfunktionen.
expression
Ein Ausdruck, typischerweise eine Spalte, die nach dem angegebenen Muster gesucht wird. Der Ausdruck gehört zur Zeichenzeichenketten-Datentyp-Kategorie.
Rückgabetypen
Bigott, wenn die Ausprägung der Varchar(max) - oder nvarchar(max) -Datentypen ist; ansonsten int.
Remarks
Ist Muster , NULLgibt . PATINDEXNULL
Wenn der Ausdruck lautet, NULL wird PATINDEXein Fehler zurückgegeben.
Die Ausgangsposition lautet PATINDEX1.
PATINDEX Führt Vergleiche basierend auf der Sortierung der Eingabe aus. Um einen Vergleich in einer angegebenen Sortierung durchzuführen, können COLLATE Sie eine explizite Sortierung auf die Eingabe anwenden.
Zusatzzeichen (Ersatzpaare)
Wenn Sie Kollationen mit ergänzenden Zeichen (SC) verwenden, zählt der Rückgabewert alle UTF-16-Surrogatpaare im Ausdrucksparameter als ein einzelnes Zeichen. Weitere Informationen finden Sie unter Sortierungs- und Unicode-Support.
0x0000 (char(0)) ist ein nicht definiertes Zeichen in Windows-Sortierungen und darf in PATINDEX nicht enthalten sein.
Examples
A. Einfaches PATINDEX-Beispiel
Im folgenden Beispiel wird eine kurze Zeichenfolge (interesting data) auf die Startposition der Zeichen ter überprüft.
SELECT PATINDEX('%ter%', 'interesting data') AS position;
Hier sehen Sie das Ergebnis.
position
--------
3
B. Verwenden eines Musters mit PATINDEX
Das folgende Beispiel findet die Stelle, an der das Muster ensure in einer bestimmten Reihe der DocumentSummary Spalte in der Document Tabelle der AdventureWorks2025-Datenbank beginnt.
SELECT PATINDEX('%ensure%', DocumentSummary) AS position
FROM Production.Document
WHERE DocumentNode = 0x7B40;
GO
Hier sehen Sie das Ergebnis.
position
--------
64
Wenn Sie die Zeilen nicht einschränken, die mithilfe einer WHERE Klausel durchsucht werden sollen, gibt die Abfrage alle Zeilen in der Tabelle zurück und meldet Nichtzerowerte für die Zeilen, in denen das Muster gefunden wurde, und null für alle Zeilen, in denen das Muster nicht gefunden wurde.
C. Verwenden von Wildcardzeichen mit PATINDEX
Im folgenden Beispiel wird mit dem Platzhalterzeichen % und dem Platzhalterzeichen _ nach der Position gesucht, an der das Muster 'en' in der angegebenen Zeichenfolge beginnt und auf das ein beliebiges Zeichen sowie 'ure' folgen (Index beginnt bei 1):
SELECT PATINDEX('%en_ure%', 'Please ensure the door is locked!') AS position;
Hier sehen Sie das Ergebnis.
position
--------
8
PATINDEX funktioniert analog zu LIKE; Sie können daher eines der Platzhalterzeichen verwenden. Sie müssen das Muster nicht zwischen Prozenten einschließen.
PATINDEX('a%', 'abc') gibt 1 und PATINDEX('%a', 'cba') 3 zurück.
Im Gegensatz zu LIKE gibt PATINDEX ähnlich wie CHARINDEX eine Position zurück.
D. Verwenden komplexer Wildcardausdrücke mit PATINDEX
Das folgende Beispiel verwendet den [^], um die Position eines Zeichens zu bestimmen, das weder eine Zahl, ein Buchstabe noch ein Leerzeichen ist.
SELECT PATINDEX('%[^ 0-9A-Za-z]%', 'Please ensure the door is locked!') AS position;
Hier sehen Sie das Ergebnis.
position
--------
33
E. Verwenden von COLLATE mit PATINDEX
Im folgenden Beispiel wird die COLLATE-Funktion verwendet, um die Sortierung des durchsuchten Ausdrucks ausdrücklich anzugeben.
USE tempdb;
GO
SELECT PATINDEX('%ein%', 'Das ist ein Test' COLLATE Latin1_General_BIN);
GO
Hier sehen Sie das Ergebnis.
position
--------
9
F. Verwenden einer Variablen zum Angeben des Musters
Das folgende Beispiel verwendet eine Variable, um einen Wert an den Musterparameter zu übergeben. Dieses Beispiel verwendet die AdventureWorks2025-Datenbank.
DECLARE @MyValue AS VARCHAR (10) = 'safety';
SELECT PATINDEX('%' + @MyValue + '%', DocumentSummary) AS position
FROM Production.Document
WHERE DocumentNode = 0x7B40;
Hier sehen Sie das Ergebnis.
position
--------
22
Verwandte Inhalte
- WIE (Transact-SQL)
- CHARINDEX (Transact-SQL)
- LEN (Transact-SQL)
- Datentypen (Transact-SQL)
- Zeichenfolgenfunktionen (Transact-SQL)
- [ ] (Wildcard - übereinstimmende Zeichen) (Transact-SQL)
- [^] (Wildcard - Zeichen, die nicht übereinstimmen sollen) (Transact-SQL)
- _ (Wildcard - übereinstimmung mit einem Zeichen) (Transact-SQL)
- Prozentzeichen (Zugleichende Zeichen - Zeichen) (Transact-SQL)