Gibt eine Ganzzahl zurück, die die Startposition des ersten Auftretens eines Musters in einer Zeichenfolge darstellt.
PATINDEX( '%pattern%', string-expression )
pattern Das Muster, nach dem gesucht wird. Wenn der führende Prozent-Platzhalter weggelassen wird, gibt die PATINDEX-Funktion "1" zurück, falls das Muster am Anfang der Zeichenfolge auftritt, und "0", falls nicht.
Das Muster für UltraLite verwendet die folgenden Platzhalter:
Wildcard-Zeichen | Gefunden |
---|---|
_ (Unterstrich) | Ein Zeichen |
% (Prozent) | Eine Zeichenfolge mit null oder mehr Zeichen |
[] | Ein einzelnes Zeichen im angegebenen Bereich oder Menge |
[^] | Ein einzelnes Zeichen außerhalb des angegebenen Bereichs oder Menge |
string-expression Die Zeichenfolge, die nach dem Muster durchsucht werden soll
INT
Die PATINDEX-Funktion gibt die Startposition des ersten Auftretens des Musters zurück. Wenn das Muster nicht gefunden wird, wird "0" zurückgegeben.
SQL/2008 Erweiterung des Herstellers.
Die folgende Anweisung liefert den Wert 2.
SELECT PATINDEX( '%hoco%', 'chocolate' ); |
Die folgende Anweisung liefert den Wert 11.
SELECT PATINDEX( '%4_5_', '0a1A 2a3A 4a5A' ); |
Die folgende Anweisung gibt 14 zurück, also das erste, nicht alphanumerische Zeichen im Zeichenfolgenausdruck. Das Muster
'%[^a-z0-9]%'
kann anstelle von '%[^a-zA-Z0-9]%'
verwendet werden, wenn die Datenbank die Groß- und Kleinschreibung nicht berücksichtigt.
SELECT PATINDEX( '%[^a-zA-Z0-9]%', 'SQLAnywhere12 has many new features' ); |
Um alle Daten bis einschließlich zum ersten nicht-alphanumerischen Zeichen in einer Zeichenfolge zu erhalten, können Sie einen Befehl der folgenden Art benutzen:
SELECT LEFT( @string, PATINDEX( '%[^a-zA-Z0-9]%', @string ) ); |
Die folgenden Anweisungen erstellen die Tabelle myTable und füllen sie mit verschiedenen Zeichenfolgen mit alphanumerischen Zeichen, Leerzeichen und nicht-alphanummerischen Zeichen. Danach zeigen die SELECT-Anweisung und die folgenden Ergebnisse, wie Sie PATINDEX verwenden können, um die Startposition von Leerstellen und nicht-alphanumerischen Zeichen in den Zeichenfolgen zu finden:
CREATE TABLE myTable( col1 LONG VARCHAR ); INSERT INTO myTable (col1) VALUES( 'the quick brown fox jumped over the lazy dog' ), ( 'the quick brown fox $$$$ jumped over the lazy dog' ), ( 'the quick brown fox 0999 jumped over the lazy dog' ), ( 'the quick brown fox ** jumped over the lazy dog' ), ( 'thequickbrownfoxjumpedoverthelazydog' ), ( 'thequickbrownfoxjum999pedoverthelazydog' ), ( 'thequick$$$$brownfox' ), ( 'the quick brown fox$$ jumped over the lazy dog' ); SELECT col1, //position of first non-alphanumeric character or space: PATINDEX( '%[^a-z0-9]%', col1) AS blank_posn, //position of first non-alphanumeric char that isn't a space: PATINDEX( '%[^ a-z0-9]%', col1) AS non_alpha_char, //everything up to and including first non-alphanumeric char that isn't a space: LEFT ( col1, PATINDEX( '%[^ a-zA-Z0-9]%', col1) ) AS left_str, //first non-alphanumeric char that isn't a space, and everything to the right: SUBSTRING ( col1, PATINDEX( '%[^ a-zA-Z0-9]%', col1) ) AS sub_str FROM myTable; |
col1 | blank_posn | non_alpha_char | left_str | sub_str |
---|---|---|---|---|
the quick brown fox jumped over the lazy dog |
4 | 0 |
the quick brown fox jumped over the lazy dog |
|
the quick brown fox $$$$ jumped over the lazy dog |
4 | 21 |
the quick brown fox $ |
$$$$ jumped over the lazy dog |
the quick brown fox 0999 jumped over the lazy dog |
4 | 0 |
the quick brown fox 0999 jumped over the lazy dog |
|
the quick brown fox ** jumped over the lazy dog |
4 | 21 |
the quick brown fox * |
** jumped over the lazy dog |
thequickbrownfoxjumpedoverthelazydog |
0 | 0 |
thequickbrownfoxjumpedoverthelazydog |
|
thequickbrownfoxjum999pedoverthelazydog |
0 | 0 |
thequickbrownfoxjum999pedoverthelazydog |
|
thequick$$$$brownfox |
9 | 9 |
thequick$ |
$$$$brownfox |
the quick brown fox$$ jumped over the lazy dog |
4 | 20 |
the quick brown fox$ |
$$ jumped over the lazy dog |
![]() |
Kommentieren Sie diese Seite in DocCommentXchange.
|
Copyright © 2012, iAnywhere Solutions, Inc. - SQL Anywhere 12.0.1 |