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.
SIMILARZU
Der SIMILAR TO-Operator ordnet einem Zeichenkettenausdruck, z. B. einem Spaltennamen, ein Standardmuster für reguläre Ausdrücke zu. SQL Ein Muster für SQL reguläre Ausdrücke kann eine Reihe von Metazeichen enthalten, die dem Muster entsprechen, einschließlich der beiden, die vom Operator unterstützt werden. LIKE
Der SIMILAR TO-Operator gibt nur dann true zurück, wenn sein Muster mit der gesamten Zeichenfolge übereinstimmt, im Gegensatz zum Verhalten bei POSIX regulären Ausdrücken, bei denen das Muster mit einem beliebigen Teil der Zeichenfolge übereinstimmen kann.
SIMILARTO führt eine Suche unter Berücksichtigung der Groß- und Kleinschreibung durch.
Anmerkung
Der Abgleich regulärer Ausdrücke mit SIMILAR TO 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 SIMILAR TO '%(Ring|Die)%'; select count(*) from event where eventname LIKE '%Ring%' OR eventname LIKE '%Die%';
Syntax
expression [ NOT ] SIMILAR TO pattern [ ESCAPE 'escape_char' ]
Argumente
- expression
-
Ein UTF gültiger Ausdruck mit 8 Zeichen, z. B. ein Spaltenname.
- SIMILARZU
-
SIMILARTO führt einen Mustervergleich unter Berücksichtigung der Groß- und Kleinschreibung für die gesamte Zeichenfolge im Ausdruck durch.
- pattern
-
Ein UTF gültiger Ausdruck mit 8 Zeichen, der ein SQL Standardmuster für reguläre Ausdrücke darstellt.
- escape_char
-
Ein Zeichenfolgenausdruck zur Kennzeichnung von Metazeichen im Muster als Literal. Dies ist standardmäßig die Zeichenfolge \\ (doppelter umgekehrter Schrägstrich).
Wenn das Muster pattern keine Metazeichen enthält, wird das Muster als die Zeichenfolge selbst interpretiert.
Bei jedem der Zeichenausdrücke kann es sich um CHAR einen VARCHAR Datentyp handeln. Wenn unterschiedliche Datentypen verwendet werden, konvertiert Amazon Redshift pattern in den Datentyp des Ausdrucks expression.
SIMILARTO unterstützt die folgenden Metazeichen für den Musterabgleich:
Operator | Beschreibung |
---|---|
% |
Entspricht einer Folge von 0 oder mehr Zeichen. |
_ |
Entspricht einem beliebigen Zeichen. |
| |
Alternativen (eines der beiden angegebenen Teilmuster). |
* |
Wiederholt das vorangehende Element 0 oder mehr Male. |
+ |
Wiederholt das vorangehende Element 1 oder mehr Male. |
? |
Wiederholt das vorangehende Element 0 oder 1 Mal. |
{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. |
() |
Klammern fassen Elemente zu einem logischen Element zusammen. |
[...] |
Ein Klammerausdruck spezifiziert eine Zeichenklasse, genau wie bei regulären Ausdrücken. POSIX |
Beispiele
Die folgende Tabelle zeigt Beispiele für den Musterabgleich mit SIMILAR TO:
Ausdruck | Rückgabewert |
---|---|
'abc' SIMILAR TO 'abc' |
Wahr |
'abc' SIMILAR TO '_b_' |
True |
'abc' SIMILAR TO '_A_' |
False |
'abc' SIMILAR TO '%(b|d)%' |
True |
'abc' SIMILAR TO '(b|c)%' |
False |
'AbcAbcdefgefg12efgefg12' SIMILAR TO
'((Ab)?c)+d((efg)+(12))+' |
True |
'aaaaaab11111xy' SIMILAR TO 'a{6}_
[0-9]{5}(x|y){2}' |
True |
'$0.87' SIMILAR TO '$[0-9]+(.[0-9][0-9])?'
|
Wahr |
Das folgende Beispiel listet Städte auf, deren Name ein „E“ oder ein „H“ enthält:
SELECT DISTINCT city FROM users WHERE city SIMILAR TO '%E%|%H%' ORDER BY city LIMIT 5; city ----------------- Agoura Hills Auburn Hills Benton Harbor Beverly Hills Chicago Heights
In dem folgenden Beispiel wird die Standard-Escape-Zeichenfolge (\\
) verwendet, um nach Zeichenfolgen zu suchen, die den Unterstrich (_
) enthalten.
SELECT tablename, "column" FROM pg_table_def WHERE "column" SIMILAR TO '%start\\_%' ORDER BY tablename, "column" LIMIT 5; tablename | column --------------------------+--------------------- stcs_abort_idle | idle_start_time stcs_abort_idle | txn_start_time stcs_analyze_compression | start_time stcs_auto_worker_levels | start_level stcs_auto_worker_levels | start_wlm_occupancy
In dem folgenden Beispiel wird als Escape-Zeichenfolge ^
verwendet, und dann wird nach Zeichenfolgen gesucht, die den Unterstrich (_
) enthalten.
SELECT tablename, "column" FROM pg_table_def WHERE "column" SIMILAR TO '%start^_%' ESCAPE '^' ORDER BY tablename, "column" LIMIT 5; tablename | column --------------------------+--------------------- stcs_abort_idle | idle_start_time stcs_abort_idle | txn_start_time stcs_analyze_compression | start_time stcs_auto_worker_levels | start_level stcs_auto_worker_levels | start_wlm_occupancy