POSIXOperatoren - Amazon Redshift

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

POSIXOperatoren

Ein POSIX regulärer Ausdruck ist eine Folge von Zeichen, die ein Übereinstimmungsmuster angibt. Eine Zeichenfolge entspricht einem regulären Ausdruck, wenn sie Teil der regulären Menge ist, die durch den regulären Ausdruck beschrieben wird.

POSIXReguläre Ausdrücke bieten ein leistungsfähigeres Mittel für den Musterabgleich als die SIMILARZU Operatoren LIKE und. POSIXMuster mit regulären Ausdrücken können mit jedem Teil einer Zeichenfolge übereinstimmen, im Gegensatz SIMILAR zum TO-Operator, der nur dann true zurückgibt, wenn sein Muster mit der gesamten Zeichenfolge übereinstimmt.

Anmerkung

Der Abgleich regulärer Ausdrücke mithilfe von POSIX Operatoren ist rechenintensiv. Wir empfehlen die Verwendung, LIKE wann immer dies möglich ist, insbesondere bei der Verarbeitung einer sehr großen Anzahl von Zeilen. Beispielsweise sind die folgenden Abfragen funktionell identisch, aber die Abfrage, die verwendet, wird um ein Vielfaches schneller LIKE ausgeführt als die Abfrage, die einen regulären Ausdruck verwendet:

select count(*) from event where eventname ~ '.*(Ring|Die).*'; select count(*) from event where eventname LIKE '%Ring%' OR eventname LIKE '%Die%';

Syntax

expression [ ! ] ~ pattern

Argumente

expression

Ein UTF gültiger Ausdruck mit 8 Zeichen, z. B. ein Spaltenname.

!

Negationsoperator. Entspricht nicht dem regulären Ausdruck.

~

Führt eine Suche über beliebige Teilzeichenfolgen in dem Ausdruck expression und unter Berücksichtigung der Groß-/Kleinschreibung durch.

Anmerkung

Der Operator ~~ ist ein Synonym für LIKE.

pattern

Ein Zeichenfolgenliteral, das ein Muster für reguläre Ausdrücke darstellt.

Wenn das Muster pattern keine Platzhalterzeichen enthält, wird die Zeichenfolge selbst als Muster verwendet.

Um nach Zeichenfolgen zu suchen, die Metazeichen, beispielsweise . * | ? usw. enthalten, müssen Sie dieses Zeichen mit zwei umgekehrten Schrägstrichen ( \\) als Literal kennzeichnen. Im Gegensatz zu SIMILAR TO und LIKE unterstützt die Syntax POSIX regulärer Ausdrücke kein benutzerdefiniertes Escape-Zeichen.

Bei jedem der Zeichenausdrücke kann es sich um VARCHAR Datentypen CHAR handeln. Wenn unterschiedliche Datentypen verwendet werden, konvertiert Amazon Redshift pattern in den Datentyp des Ausdrucks expression.

Alle Zeichenausdrücke können vom CHAR VARCHAR Datentyp R sein. Wenn in den Ausdrücken unterschiedliche Datentypen verwendet werden, konvertiert Amazon Redshift sie in den Datentyp des Ausdrucks expression.

POSIXDer Musterabgleich unterstützt die folgenden Metazeichen:

POSIX Beschreibung
. Entspricht einem beliebigen Zeichen.
* Findet 0 oder mehr Vorkommen.
+ Findet 1 oder mehr Vorkommen.
? Findet 0 oder 1 Vorkommen.
| Gibt alternative Übereinstimmungen an. Beispiel: E | H bedeutet E oder H.
^ Entspricht dem Zeichen. beginning-of-line
$ Entspricht dem end-of-line Zeichen.
$ Findet die Position am Ende der ganzen Zeichenfolge.
[ ] In eckigen Klammern steht eine Musterliste, aus der ein Element übereinstimmen muss. Ein der Liste vorangestelltes Caret-Zeichen (^) steht für eine Musterausschlussliste, die auf alle Zeichenfolgen außer den Ausdrücken in der Liste passt.
( ) Klammern fassen Elemente zu einem logischen Element zusammen.
{m} Wiederholt das vorangehende Element genau m Male.
{m,} Wiederholt das vorangehende Element m oder mehr Male.
{m,n} Wiederholt das vorangehende Element m bis n Male.
[: :] Entspricht einem beliebigen Zeichen innerhalb einer POSIX Zeichenklasse. In den folgenden Zeichenklassen unterstützt Amazon Redshift nur ASCII Zeichen:[:alnum:],,[:alpha:], [:lower:] [:upper:]

Amazon Redshift unterstützt die folgenden POSIX Zeichenklassen.

Zeichenklasse Beschreibung
[[:alnum:]] Alle ASCII alphanumerischen Zeichen
[[:alpha:]] Alle ASCII alphabetischen Zeichen
[[:blank:]] Alle Whitespace-Zeichen
[[:cntrl:]] Alle Steuerzeichen (nicht druckbar)
[[:digit:]] Alle Ziffern
[[:lower:]] Alle alphabetischen Kleinbuchstaben ASCII
[[:punct:]] Alle Interpunktionszeichen
[[:space:]] Alle Leerzeichen (nicht druckbar)
[[:upper:]] Alle Großbuchstaben ASCII
[[:xdigit:]] Alle gültigen Hexadezimalzeichen

Amazon Redshift unterstützt in regulären Ausdrücken die folgenden Operatoren, die an Perl angelehnt sind. Wenn Sie den Operator nicht als Metazeichen verwenden möchten, müssen Sie ihn mit zwei umgekehrten Schrägstrichen () als Literal kennzeichnen. (‘\\’).  

Operator Beschreibung Entsprechender Zeichenklassenausdruck
\\d Eine Ziffer [[:digit:]]
\\D Ein Zeichen, das keine Ziffer ist [^[:digit:]]
\\w Ein Zeichen, das Bestandteil eines Worts sein kann [[:word:]]
\\W Ein Zeichen, das kein Bestandteil eines Worts sein kann [^[:word:]]
\\s Ein Whitespace-Zeichen [[:space:]]
\\S Ein Zeichen, das keinen Whitespace darstellt [^[:space:]]
\\b Ein Grenzwort

Beispiele

Die folgende Tabelle zeigt Beispiele für den Mustervergleich mithilfe von POSIX Operatoren:

Ausdruck Rückgabewert
'abc' ~ 'abc' Wahr
'abc' ~ 'a' True
'abc' ~ 'A' False
'abc' ~ '.*(b|d).*' True
'abc' ~ '(b|c).*' True
'AbcAbcdefgefg12efgefg12' ~ '((Ab)?c)+d((efg)+(12))+' True
'aaaaaab11111xy' ~ 'a{6}.[1]{5}(x|y){2}' True
'$0.87' ~ '\\$[0-9]+(\\.[0-9][0-9])?' True
'ab c' ~ '[[:space:]]' True
'ab c' ~ '\\s' True
' ' ~ '\\S' Falsch

Das folgende Beispiel listet Städte auf, deren Name ein E oder ein H enthält:

SELECT DISTINCT city FROM users WHERE city ~ '.*E.*|.*H.*' ORDER BY city LIMIT 5; city ----------------- Agoura Hills Auburn Hills Benton Harbor Beverly Hills Chicago Heights

Das folgende Beispiel listet Städte auf, deren Name weder E noch H enthält:

SELECT DISTINCT city FROM users WHERE city !~ '.*E.*|.*H.*' ORDER BY city LIMIT 5; city ----------------- Aberdeen Abilene Ada Agat Agawam

In dem folgenden Beispiel wird die Escape-Zeichenfolge (\\) verwendet, um nach Zeichenfolgen zu suchen, die den Punkt (.) enthalten.

SELECT venuename FROM venue WHERE venuename ~ '.*\\..*' ORDER BY venueid; venuename ------------------------------ St. Pete Times Forum Jobing.com Arena Hubert H. Humphrey Metrodome U.S. Cellular Field Superpages.com Center E.J. Nutter Center Bernard B. Jacobs Theatre St. James Theatre