PatIndex
prüft, ob das angegebene pattern (= Muster), welches Platzhalterzeichen enthalten kann, im zweiten Ausdruck enthalten
ist. Es wird entweder die Startposition des ersten Auftretens (> 0) oder 0 zurückgegeben, falls das Muster nicht
gefunden wurde. Die Position wird als Zeichenposition, nicht als Byte-Position zurückgegeben, so daß es irrelevant ist,
ob es sich um varchar oder um nvarchar-Daten handelt.
Syntax
PatIndex (<%pattern%>, <Zeichenfolgen-Ausdruck>)
Parameterliste
- <%pattern%>
- Muster, das die zu durchsuchende Zeichenfolge enthält. Prozentzeichen sind Platzhalter
(analog zu LIKE), fehlen sie, so wird nach vollständiger Übereinstimmung gesucht.
- <Zeichenfolgen-Ausdruck>
- Ausdruck, der eine Zeichenfolge oder eine Spalte mit Zeichendaten darstellt
- Rückgabewert
- Ganzzahl >= 0
- Typ
- Zeichenfolgen-Funktion
Beispiele
PatIndex('%b%', 'abc') = 2PatIndex('b%', 'abc') = 0PatIndex('%bc', 'abc') = 2
Zu beachten ist, daß die Position des Platzhalters nicht beim Rückgabewert berücksichtigt wird. Ansonsten müßte jeder
erfolgreiche Fund eine 1 zurückgeben. Der zweite Platzhalter '_' dient für die Suche nach einem einzelnen Zeichen,
mit '[%]' kann nach dem Prozentzeichen literal gesucht werden, '[[]' findet eine öffnende eckige Klammer.
Hinweise
Der Operator
Like stellt eine ähnliche Funktionalität bereit. Die beiden folgenden Ausdrücke sind
fast äquivalent:
Where <Spaltenname> Like 'pattern'Where PatIndex('pattern', <Spaltenname>) > 0
Die Nicht-Äquivalenz bezieht sich auf die Behandlung eines Pattern, das nur aus Platzhaltern besteht (etwa '%' oder '%%%').
Der Like-Ausdruck findet alle nicht leeren Zeilen, PatIndex liefert für das pattern '%' immer 0, so daß die obige Abfrage
keine Zeile zurückliefert.
Zusätzlich kann mit der PatIndex-Funktion in Kombination mit anderen Funktionen wie
Left oder
Right
bsp. der Text ermittelt werden, welcher vor oder nach dem gefundenen Muster notiert ist.
© 2003-2009 Jürgen Auer, Berlin.