IVF

Chasing Dreams

Impala String-Funktionen

  • Alle Funktionen, die STRING Argumente akzeptieren, akzeptieren auch die in Impala 2.0 eingeführten Typen VARCHAR und CHAR .
  • Wenn VARCHAR oder CHAR Werte an eine Funktion übergeben werden, die einen String-Wert zurückgibt, wird der Rückgabetyp auf STRING normalisiert. Beispielsweise erzeugt ein Aufruf von concat() mit einer Mischung aus STRING, VARCHAR und CHAR Argumenten ein STRING Ergebnis.

Funktionsreferenz:

Impala unterstützt die folgenden String-Funktionen:

  • ASCII
  • BASE64DECODE
  • BASE64ENCODE
  • BTRIM
  • CHAR_LENGTH
  • CHR
  • CONCAT
  • CONCAT_WS
  • FIND_IN_SET
  • GROUP_CONCAT
  • INITCAP
  • INSTR
  • JARO_DISTANCE, JARO_DIST
  • JARO_ÄHNLICHKEIT, JARO_SIM
  • JARO_WINKER_DISTANCE, JW_DST
  • JARO_WINKER_SIMILARITY, JW_SIM
  • LINKS
  • LÄNGE
  • LEVENSHTEIN, LE_DST
  • RECHTS
  • UNTEN, LCASE
  • LPAD
  • LTRI
  • PARSE_URL
  • REGEXP_ESCAPE
  • REGEXP_EXTRACT
  • REGEXP_LIKE
  • REGEXP_REPLACE
  • WIEDERHOLEN
  • ERSETZEN
  • RÜCKWÄRTS
  • RECHTS
  • RPAD
  • RTRIM
  • RAUM
  • SPLIT_PART
  • STRLEFT
  • STRRIGHT
  • SUBSTR, TEILZEICHENFOLGE
  • ÜBERSETZEN
  • TRIM
  • UPPER, UCASE

ASCII(STRING str) Zweck: Gibt den numerischen ASCII-Code des ersten Zeichens des Arguments zurück.

Rückgabetyp: INT

BASE64DECODE(STRING str) Zweck:

Rückgabetyp: STRING

Hinweise zur Verwendung:

Die Funktionen BASE64ENCODE() und BASE64DECODE() werden normalerweise in Kombination verwendet, um in einer Impala-Tabelle Zeichenfolgendaten zu speichern, deren Speicherung oder Übertragung problematisch ist. Sie können diese Funktionen beispielsweise verwenden, um Zeichenfolgendaten zu speichern, die eine andere Codierung als UTF-8 verwenden, oder um die Werte in Kontexten zu transformieren, die ASCII-Werte erfordern, z. B. für Partitionsschlüsselspalten. Beachten Sie, dass base64-codierte Werte für Zeichenfolgenfunktionen wie LENGTH(), MAX() und MIN() zu anderen Ergebnissen führen, als wenn diese Funktionen mit den nicht codierten Zeichenfolgenwerten aufgerufen werden.

Alle von BASE64ENCODE() erzeugten Rückgabewerte sind ein Vielfaches von 4 Byte lang. Alle Argumentwerte, die an BASE64DECODE() übergeben werden, müssen ebenfalls ein Vielfaches von 4 Byte lang sein. Wenn ein base64-codierter Wert ansonsten eine andere Länge hätte, kann er mit nachgestellten = -Zeichen aufgefüllt werden, um eine Länge zu erreichen, die ein Vielfaches von 4 Byte beträgt.

Wenn die Argumentzeichenfolge für BASE64DECODE() keinen gültigen base64-codierten Wert darstellt, gibt die Funktion vorbehaltlich der Einschränkungen der Impala-Implementierung, z. B. des zulässigen Zeichensatzes, NULL zurück.

Beispiele:

BASE64ENCODE(STRING str) Zweck:

Rückgabetyp: STRING

Hinweise zur Verwendung:

Die Funktionen BASE64ENCODE() und BASE64DECODE() werden normalerweise in Kombination verwendet, um in einer Impala-Tabelle Zeichenfolgendaten zu speichern, deren Speicherung oder Übertragung problematisch ist. Sie können diese Funktionen beispielsweise verwenden, um Zeichenfolgendaten zu speichern, die eine andere Codierung als UTF-8 verwenden, oder um die Werte in Kontexten zu transformieren, die ASCII-Werte erfordern, z. B. für Partitionsschlüsselspalten. Beachten Sie, dass base64-codierte Werte für Zeichenfolgenfunktionen wie LENGTH(), MAX() und MIN() zu anderen Ergebnissen führen, als wenn diese Funktionen mit den nicht codierten Zeichenfolgenwerten aufgerufen werden.

Alle von BASE64ENCODE() erzeugten Rückgabewerte sind ein Vielfaches von 4 Byte lang. Alle Argumentwerte, die an BASE64DECODE() übergeben werden, müssen ebenfalls ein Vielfaches von 4 Byte lang sein. Wenn ein base64-codierter Wert ansonsten eine andere Länge hätte, kann er mit nachgestellten = -Zeichen aufgefüllt werden, um eine Länge zu erreichen, die ein Vielfaches von 4 Byte beträgt.

Beispiele:

BTRIM(STRING a), BTRIM(STRING a, STRING chars_to_trim) Zweck: Entfernt alle Instanzen eines oder mehrerer Zeichen vom Anfang und Ende einesSTRING-Werts. Standardmäßig werden nur Leerzeichen entfernt. Wenn ein Nicht-NULLoptionales zweites Argument angegeben wird, entfernt die Funktion alle Vorkommen von Zeichen in diesem zweiten Argument vom Anfang und Ende der Zeichenfolge.

Rückgabetyp: STRING

Beispiele:

Die folgenden Beispiele zeigen das Standardverhalten btrim() und was sich ändert, wenn Sie das optionale zweite Argument angeben. In allen Beispielen wird der Ausgabewert mit geklammert, sodass Sie im Ergebnis btrim() führende oder nachfolgende Leerzeichen sehen können. Standardmäßig entfernt die Funktion und die Anzahl der führenden und nachgestellten Leerzeichen. Wenn das zweite Argument angegeben wird, wird eine beliebige Anzahl von Vorkommen eines beliebigen Zeichens im zweiten Argument vom Anfang und Ende der Eingabezeichenfolge entfernt; in diesem Fall werden Leerzeichen nicht entfernt (es sei denn, sie sind Teil des zweiten Arguments), und Instanzen der Zeichen werden nicht entfernt, wenn sie nicht direkt am Anfang oder Ende der Zeichenfolge stehen.

CHAR_LENGTH(STRING a), CHARACTER_LENGTH(STRING a) Zweck: Gibt die Länge des Arguments string in Zeichen zurück. Aliase für die Funktion

length().

Rückgabetyp: INT

CHR(INT character_code) Zweck: Gibt ein Zeichen zurück, das durch einen Dezimalcodepunktwert angegeben wird. Die Interpretation und Anzeige des resultierenden Zeichens hängt von Ihrem Systemgebietsschema ab. Da eine konsistente Verarbeitung von Impala-Zeichenfolgenwerten nur für Werte innerhalb des ASCII-Bereichs gewährleistet ist, verwenden Sie diese Funktion nur für Werte, die ASCII-Zeichen entsprechen. Insbesondere geben Parameterwerte größer als 255 eine leere Zeichenfolge zurück.

Rückgabetyp: STRING

Hinweise zur Verwendung: Kann als Inverse der Funktion ascii() verwendet werden, die ein Zeichen in seinen numerischen ASCII-Code konvertiert.

Beispiele:

SELECT chr(65);+---------+| chr(65) |+---------+| A |+---------+SELECT chr(97);+---------+| chr(97) |+---------+| a |+---------+

CONCAT(STRING a, STRING b…) Zweck: Gibt eine einzelne Zeichenfolge zurück, die alle miteinander verbundenen Argumentwerte darstellt.

Wenn ein Argument NULL ist, gibt die Funktion NULL zurück.

Rückgabetyp: STRING

Hinweise zur Verwendung: concat() und concat_ws() eignen sich zum Verketten der Werte mehrerer Spalten in derselben Zeile, während group_concat() Werte aus verschiedenen Zeilen zusammenfügt.

CONCAT_WS(ZEICHENKETTE a, ZEICHENKETTE a, ZEICHENKETTE b…) Zweck: Gibt eine einzelne Zeichenfolge zurück, die den zweiten und den folgenden Argumentwert darstellt, die durch ein angegebenes Trennzeichen getrennt sind.

Wenn ein Argument NULL ist, gibt die Funktion NULL zurück.

Rückgabetyp: STRING

Hinweise zur Verwendung: concat() und concat_ws() eignen sich zum Verketten der Werte mehrerer Spalten innerhalb derselben Zeile, während group_concat() Werte aus verschiedenen Zeilen zusammenfügt.

FIND_IN_SET(STRING str, STRING strList) Zweck: Gibt die Position (beginnend mit 1) des ersten Auftretens eines angegebenen Strings innerhalb eines durch Kommas getrennten Strings zurück. GibtNULLzurück, wenn eines der ArgumenteNULList, 0, wenn die Suchzeichenfolge nicht gefunden wurde, oder 0, wenn die Suchzeichenfolge ein Komma enthält.

Rückgabetyp: INT

GROUP_CONCAT(STRING s ) Zweck: Gibt eine einzelne Zeichenfolge zurück, die den Argumentwert darstellt, der für jede Zeile der Ergebnismenge verkettet ist. Wenn die optionale Trennzeichenfolge angegeben ist, wird das Trennzeichen zwischen jedem Paar verketteter Werte hinzugefügt.

Rückgabetyp: STRING

Hinweise zur Verwendung: concat() und concat_ws() eignen sich zum Verketten der Werte mehrerer Spalten in derselben Zeile, während group_concat() Werte aus verschiedenen Zeilen zusammenfügt.

Gibt standardmäßig eine einzelne Zeichenfolge zurück, die die gesamte Ergebnismenge abdeckt. Um andere Spalten oder Werte in die Ergebnismenge aufzunehmen oder mehrere verkettete Zeichenfolgen für Teilmengen von Zeilen zu erzeugen, fügen Sie eine GROUP BY -Klausel in die Abfrage ein.

Streng genommen ist group_concat() eine Aggregatfunktion, keine Skalarfunktion wie die anderen in dieser Liste. Weitere Details und Beispiele finden Sie in der Funktion GROUP_CONCAT.

INITCAP(STRING str) Zweck: Gibt die Eingabezeichenfolge mit dem ersten Buchstaben jedes Wortes in Großbuchstaben und allen anderen Buchstaben in Kleinbuchstaben zurück.

Rückgabetyp: STRING

Beispiel:

INITCAP("i gOt mY ChiCkeNs in tHe yard.") gibt "I Got My Chickens In The Yard." zurück.

INSTR(STRING str, STRING substr ]) Zweck: Gibt die Position (beginnend mit 1) des ersten Auftretens eines Teilstrings innerhalb eines längeren Strings zurück.

Rückgabetyp: INT

Hinweise zur Verwendung:

Wenn das substr in str nicht vorhanden ist, gibt die Funktion 0 zurück.

Mit dem optionalen dritten und vierten Argument können Sie andere Instanzen des substr als die erste Instanz finden, beginnend von links.

JARO_DISTANCE(STRING str1, STRING str2) JARO_DST(STRING str1, STRING str2) Zweck: Gibt den Jaro-Abstand zwischen zwei Eingabezeichenfolgen zurück. Der Jaro-Abstand ist ein Maß für die Ähnlichkeit zwischen zwei Strings und ist das Komplementär vonJARO_SIMILARITY(), dh (1 –JARO_SIMILARITY()).

Rückgabetyp: DOUBLE

Hinweise zur Verwendung:

Wenn die beiden Eingabezeichenfolgen identisch sind, gibt die Funktion 0.0 zurück.

Wenn zwischen den Eingabezeichenfolgen kein übereinstimmendes Zeichen vorhanden ist, gibt die Funktion 1.0 zurück.

Wenn eine der Eingabezeichenfolgen NULL ist, gibt die Funktion NULL zurück.

Wenn die Länge einer der beiden Eingabezeichenfolgen größer als 255 Zeichen ist, gibt die Funktion einen Fehler zurück.

JARO_SIMILARITY(STRING str1, STRING str2) JARO_SIM(STRING str1, STRING str2) Zweck: Gibt die Jaro-Ähnlichkeit zweier Strings zurück. Je höher die Jaro-Ähnlichkeit für zwei Saiten ist, desto ähnlicher sind sich die Saiten.

Rückgabetyp: DOUBLE

Hinweise zur Verwendung:

Wenn die beiden Eingabezeichenfolgen identisch sind, gibt die Funktion 1.0 zurück.

Wenn zwischen den Eingabezeichenfolgen kein übereinstimmendes Zeichen vorhanden ist, gibt die Funktion 0.0 zurück.

Wenn eine der Eingabezeichenfolgen NULL ist, gibt die Funktion NULL zurück.

Wenn die Länge einer der beiden Eingabezeichenfolgen größer als 255 Zeichen ist, gibt die Funktion einen Fehler zurück.

JARO_WINKLER_DISTANCE(STRING str1, STRING str2) JW_DST(STRING str1, STRING str2) Zweck: Gibt den Jaro-Winkler-Abstand zweier Eingabezeichenfolgen zurück. Es ist das Komplementär vonJARO_WINKLER_SIMILARITY(), dh 1 –JARO_WINKLER_SIMILARITY().

Rückgabetyp: DOUBLE

Hinweise zur Verwendung:

Wenn die beiden Eingabezeichenfolgen identisch sind, gibt die Funktion 0.0 zurück.

Wenn zwischen den Eingabezeichenfolgen kein übereinstimmendes Zeichen vorhanden ist, gibt die Funktion 1.0 zurück.

Die Funktion gibt in den folgenden Fällen einen Fehler zurück:

  • Die Länge einer der beiden Eingabezeichenfolgen ist größer als 255 Zeichen.
  • scaling_factor < 0.0 oder scaling_factor > 0.25
  • boost_threshold < 0.0 oder boost_threshold > 1.0

Wenn eine der beiden Eingabezeichenfolgen NULL ist, gibt die Funktion NULL zurück.

Der Standardskalierungsfaktor ist 0,1.

Das Präfixgewicht wird nur angewendet, wenn der Jaro-Abstand den optionalen boost_threshold überschreitet. Standardmäßig ist der Wert boost_threshold 0.7.

JARO_WINKLER_SIMILARITY(STRING str1, STRING str2) JARO_SIM(STRING str1, STRING str2) Zweck: Gibt die Jaro-Winkler-Ähnlichkeit zwischen zwei Eingabezeichenfolgen zurück. Die Jaro-Winkler-Ähnlichkeit verwendet ein Präfixgewicht, das durch den Skalierungsfaktor angegeben wird und Zeichenfolgen, die von Anfang an für eine festgelegte Präfixlänge übereinstimmen, bis zu maximal vier Zeichen günstigere Bewertungen verleiht.

Verwenden Sie Jaro- oder Jaro-Winkler-Funktionen, um Fuzzy-Matches für relativ kurze Zeichenfolgen durchzuführen, z. B. um Benutzereingaben von Namen mit den Datensätzen in der Datenbank zu vergleichen.

Rückgabetyp: DOUBLE

Hinweise zur Verwendung:

Wenn die beiden Eingabezeichenfolgen identisch sind, gibt die Funktion 1.0 zurück.

Wenn zwischen den Eingabezeichenfolgen kein übereinstimmendes Zeichen vorhanden ist, gibt die Funktion 0.0 zurück.

Die Funktion gibt in den folgenden Fällen einen Fehler zurück:

  • Die Länge einer der beiden Eingabezeichenfolgen ist größer als 255 Zeichen.
  • scaling_factor < 0.0 oder scaling_factor > 0.25
  • boost_threshold < 0.0 oder boost_threshold > 1.0

Wenn eine der beiden Eingabezeichenfolgen NULL ist, gibt die Funktion NULL zurück.

Der Standardskalierungsfaktor ist 0,1.

Die Präfixgewichtung wird nur angewendet, wenn die Jaro-Ähnlichkeit den optionalen boost_threshold überschreitet. Standardmäßig ist der Wert boost_threshold 0.7.

LEFT(STRING a, INT num_chars) Siehe die FunktionSTRLEFT(). LENGTH(STRING a) Zweck: Gibt die Länge des Arguments string in Zeichen zurück.

Rückgabetyp: INT

LEVENSHTEIN(STRING str1, STRING str2), LE_DST(STRING str1, STRING str2) Zweck: Gibt den Levenshtein-Abstand zwischen zwei Eingabezeichenfolgen zurück. Der Levenshtein-Abstand zwischen zwei Zeichenfolgen ist die minimale Anzahl von Bearbeitungen mit einem Zeichen, die erforderlich sind, um eine Zeichenfolge in eine andere umzuwandeln. Die Funktion gibt an, wie unterschiedlich die Eingabezeichenfolgen sind.

Rückgabetyp: INT

Hinweise zur Verwendung:

Wenn Eingabezeichenfolgen gleich sind, gibt die Funktion 0 zurück.

Wenn eine der beiden Eingaben 255 Zeichen überschreitet, gibt die Funktion einen Fehler zurück.

Wenn eine der beiden Eingabezeichenfolgen NULL ist, gibt die Funktion NULL zurück.

Wenn die Länge einer Eingabezeichenfolge Null ist, gibt die Funktion die Länge der anderen Zeichenfolge zurück.

Beispiel:

LEVENSHTEIN ('welcome', 'We come') gibt 2 zurück und ersetzt zuerst ‚w‚ durch ‚W‚ und dann ‚l‚ durch ein Leerzeichen.

LOCATE(STRING substr, STRING str) Zweck: Gibt die Position (beginnend mit 1) des ersten Auftretens eines Teilstrings innerhalb eines längeren Strings zurück, optional nach einer bestimmten Position.

Rückgabetyp: INT

LOWER(STRING a), LCASE(STRING a) Zweck: Gibt die Argumentzeichenfolge zurück, die in Kleinbuchstaben konvertiert wurde.

Rückgabetyp: STRING

Hinweise zur Verwendung:

In Impala 2.5 und höher können Sie Abfragen vereinfachen, die viele UPPER() – und LOWER() -Aufrufe verwenden, um Vergleiche ohne Berücksichtigung der Groß-/Kleinschreibung durchzuführen, indem Sie stattdessen die Operatoren ILIKE oder IREGEXP verwenden.

LPAD(STRING str, INT len, STRING pad) Zweck: Gibt einen String der angegebenen Länge zurück, basierend auf dem ersten Argument string. Wenn die angegebene Zeichenfolge zu kurz ist, wird sie links mit einer sich wiederholenden Folge der Zeichen aus der Pad-Zeichenfolge aufgefüllt. Wenn die angegebene Zeichenfolge zu lang ist, wird sie rechts abgeschnitten.

Rückgabetyp: STRING

LTRIM(STRING a ) Zweck: Gibt die Argumentzeichenfolge mit allen Vorkommen von Zeichen zurück, die durch das zweite Argument angegeben werden, das von der linken Seite entfernt wurde. Entfernt Leerzeichen, wenn das zweite Argument nicht angegeben ist.

Rückgabetyp: STRING

PARSE_URL(STRING urlString, STRING partToExtract ) Zweck: Gibt den Teil einer URL zurück, der einem angegebenen Teil entspricht. Das Argument part kann sein'PROTOCOL','HOST','PATH','REF','AUTHORITY','FILE','USERINFO', oder'QUERY'. Für diese Literalwerte sind Großbuchstaben erforderlich. Wenn Sie denQUERY-Teil der URL anfordern, können Sie optional einen Schlüssel angeben, um nur den zugeordneten Wert aus den Schlüssel-Wert-Paaren in der Abfragezeichenfolge abzurufen.

Rückgabetyp: STRING

Hinweise zur Verwendung: Diese Funktion ist wichtig für den traditionellen Hadoop-Anwendungsfall der Interpretation von Webprotokollen. Wenn die Webverkehrsdaten beispielsweise rohe URLs enthalten, die nicht in separate Tabellenspalten unterteilt sind, können Sie die Besucher einer bestimmten Seite zählen, indem Sie das Feld 'PATH' oder 'FILE' extrahieren, oder Suchbegriffe analysieren, indem Sie den entsprechenden Schlüssel aus dem Feld 'QUERY' extrahieren.

REGEXP_ESCAPE(STRING source) Zweck: Die FunktionREGEXP_ESCAPEgibt einen String zurück, der für das Sonderzeichen in der RE2-Bibliothek maskiert ist, sodass die Sonderzeichen wörtlich und nicht als Sonderzeichen interpretiert werden. Die folgenden Sonderzeichen werden von der Funktion maskiert:

.\+*?$(){}=!<>|:-

Rückgabetyp: string

In Impala 2.0 und höher entspricht die Impala-Syntax für reguläre Ausdrücke der erweiterten POSIX-Syntax für reguläre Ausdrücke, die von der Google RE2-Bibliothek verwendet wird. Einzelheiten finden Sie in der RE2-Dokumentation. Es enthält die meisten Redewendungen, die aus regulären Ausdrücken in Perl, Python usw. bekannt sind, einschließlich .*? für nicht gierige Übereinstimmungen.

In Impala 2.0 und höher kann eine Änderung der zugrunde liegenden Bibliothek für reguläre Ausdrücke Änderungen in der Art und Weise verursachen, wie reguläre Ausdrücke von dieser Funktion interpretiert werden. Testen Sie alle Abfragen, die reguläre Ausdrücke verwenden, und passen Sie die Ausdrucksmuster bei Bedarf an.

Da der Impala-Shell-Interpreter das Zeichen \ zum Escapen verwendet, verwenden Sie \ , um das Escapezeichen für reguläre Ausdrücke in regulären Ausdrücken darzustellen, die Sie über impala-shell übermitteln. Möglicherweise bevorzugen Sie die Verwendung der entsprechenden Zeichenklassennamen wie ] anstelle von \d, die Sie als \d .

Beispiele:

Dieses Beispiel zeigt das Escapen eines der Sonderzeichen in RE2.

+------------------------------------------------------+| regexp_escape('Hello.world') |+------------------------------------------------------+| Hello\.world |+------------------------------------------------------+

Dieses Beispiel zeigt das Escapen aller Sonderzeichen in RE2.

+------------------------------------------------------------+| regexp_escape('a.b\c+d*e?fh$i(j)k{l}m=n!o<p>q|r:s-t') |+------------------------------------------------------------+| a\.b\c\+d\*e\?f\h$i\(j\)k\{l\}m\=n\!o\<p\>q\|r\:s\-t |+------------------------------------------------------------+

REGEXP_EXTRACT(STRING subject, STRING pattern, INT index) Zweck: Gibt die angegebene () Gruppe aus einem String basierend auf einem regulären Ausdrucksmuster zurück. Gruppe 0 bezieht sich auf die gesamte extrahierte Zeichenfolge, während Gruppe 1, 2 usw. sich auf den ersten, zweiten usw.(...)-Teil bezieht.

Rückgabetyp: STRING

In Impala 2.0 und höher entspricht die Impala-Syntax für reguläre Ausdrücke der erweiterten POSIX-Syntax für reguläre Ausdrücke, die von der Google RE2-Bibliothek verwendet wird. Einzelheiten finden Sie in der RE2-Dokumentation. Es enthält die meisten Redewendungen, die aus regulären Ausdrücken in Perl, Python usw. bekannt sind, einschließlich .*? für nicht gierige Übereinstimmungen.

In Impala 2.0 und höher kann eine Änderung der zugrunde liegenden Bibliothek für reguläre Ausdrücke Änderungen in der Art und Weise verursachen, wie reguläre Ausdrücke von dieser Funktion interpretiert werden. Testen Sie alle Abfragen, die reguläre Ausdrücke verwenden, und passen Sie die Ausdrucksmuster bei Bedarf an.

Da der Impala-Shell-Interpreter das Zeichen \ zum Escapen verwendet, verwenden Sie \ , um das Escapezeichen für reguläre Ausdrücke in regulären Ausdrücken darzustellen, die Sie über impala-shell übermitteln. Möglicherweise bevorzugen Sie die Verwendung der entsprechenden Zeichenklassennamen wie ] anstelle von \d, die Sie als \d .

Beispiele:

Dieses Beispiel zeigt, wie Gruppe 0 mit der vollständigen Musterzeichenfolge übereinstimmt, einschließlich des Teils außerhalb einer () -Gruppe:

Dieses Beispiel zeigt, wie Gruppe 1 nur mit dem Inhalt der ersten () -Gruppe in der Musterzeichenfolge übereinstimmt:

Im Gegensatz zu früheren Impala-Versionen unterstützt die in Impala 2.0 und höher verwendete Bibliothek für reguläre Ausdrücke das Idiom .*? für nicht gierige Übereinstimmungen. Dieses Beispiel zeigt, wie eine Musterzeichenfolge, die mit .*? beginnt, mit dem kürzestmöglichen Teil der Quellzeichenfolge übereinstimmt und den Satz von Kleinbuchstaben ganz rechts zurückgibt. Eine Musterzeichenfolge, die mit .*? beginnt und endet, findet zwei mögliche Übereinstimmungen gleicher Länge und gibt die erste gefundene zurück (die am weitesten links stehende Menge von Kleinbuchstaben).

REGEXP_LIKE(STRING source, STRING pattern) Zweck: Gibttrueoderfalsezurück, um anzugeben, ob die Quellzeichenfolge irgendwo den vom Muster angegebenen regulären Ausdruck enthält. Das optionale dritte Argument besteht aus Buchstaben-Flags, die ändern, wie die Übereinstimmung ausgeführt wird, z. B.

ifür die Groß- / Kleinschreibung.

Syntax:

Die Flags, die Sie in das optionale dritte Argument aufnehmen können, sind:

  • c: Groß-/ Kleinschreibung beachten (Standardeinstellung).
  • i: Groß- und Kleinschreibung. Wenn mehrere Instanzen von c und i im dritten Argument enthalten sind, hat die letzte dieser Optionen Vorrang.
  • m: Mehrzeiliges Matching. Die Operatoren ^ und $ stimmen mit dem Anfang oder Ende einer beliebigen Zeile innerhalb der Quellzeichenfolge überein, nicht mit dem Anfang und Ende der gesamten Zeichenfolge.
  • n: Newline matching. Der Operator . kann mit dem Zeilenumbruchzeichen übereinstimmen. Ein Wiederholungsoperator wie .* kann mit einem Teil der Quellzeichenfolge übereinstimmen, der sich über mehrere Zeilen erstreckt.

Rückgabetyp: BOOLEAN

In Impala 2.0 und höher entspricht die Impala-Syntax für reguläre Ausdrücke der erweiterten POSIX-Syntax für reguläre Ausdrücke, die von der Google RE2-Bibliothek verwendet wird. Einzelheiten finden Sie in der RE2-Dokumentation. Es enthält die meisten Redewendungen, die aus regulären Ausdrücken in Perl, Python usw. bekannt sind, einschließlich .*? für nicht gierige Übereinstimmungen.

Im Impala 2.0 und später kann eine Änderung in der zugrunde liegenden Bibliothek für reguläre Ausdrücke Änderungen in der Art und Weise verursachen, wie reguläre Ausdrücke von dieser Funktion interpretiert werden. Testen Sie alle Abfragen, die reguläre Ausdrücke verwenden, und passen Sie die Ausdrucksmuster bei Bedarf an.

Da der Impala-Shell-Interpreter das Zeichen \ zum Escapen verwendet, verwenden Sie \ , um das Escapezeichen für reguläre Ausdrücke in regulären Ausdrücken darzustellen, die Sie über impala-shell übermitteln. Möglicherweise bevorzugen Sie die Verwendung der entsprechenden Zeichenklassennamen wie ] anstelle von \d, die Sie als \d .

Beispiele:

Dieses Beispiel zeigt, wie REGEXP_LIKE() das Vorhandensein verschiedener Arten von Mustern für reguläre Ausdrücke in einer Quellzeichenfolge testen kann:

REGEXP_REPLACE(STRING initial, STRING pattern, STRING replacement) Zweck: Gibt das anfängliche Argument zurück, wobei das Muster für reguläre Ausdrücke durch die Zeichenfolge für das endgültige Argument ersetzt wird.

Rückgabetyp: STRING

In: Impala 2.0 und höher entspricht die Impala-Syntax für reguläre Ausdrücke der erweiterten POSIX-Syntax für reguläre Ausdrücke, die von der Google RE2-Bibliothek verwendet wird. Einzelheiten finden Sie in der RE2-Dokumentation. Es enthält die meisten Redewendungen, die aus regulären Ausdrücken in Perl, Python usw. bekannt sind, einschließlich .*? für nicht gierige Übereinstimmungen.

In Impala 2.0 und höher kann eine Änderung der zugrunde liegenden Bibliothek für reguläre Ausdrücke Änderungen in der Art und Weise verursachen, wie reguläre Ausdrücke von dieser Funktion interpretiert werden. Testen Sie alle Abfragen, die reguläre Ausdrücke verwenden, und passen Sie die Ausdrucksmuster bei Bedarf an.

Da der Impala-Shell-Interpreter das Zeichen \ zum Escapen verwendet, verwenden Sie \ , um das Escapezeichen für reguläre Ausdrücke in regulären Ausdrücken darzustellen, die Sie über impala-shell übermitteln. Möglicherweise bevorzugen Sie die Verwendung der entsprechenden Zeichenklassennamen wie ] anstelle von \d, die Sie als \d .

Beispiele:

Diese Beispiele zeigen, wie Sie Teile einer Zeichenfolge, die einem Muster entspricht, durch Ersatztext ersetzen können, der Rückverweise auf beliebige () -Gruppen in der Musterzeichenfolge enthalten kann. Die Rückreferenznummern beginnen bei 1, und alle \ -Zeichen müssen als \ maskiert werden.

Zeichenmuster durch neuen Text ersetzen:

 > select regexp_replace('aaabbbaaa','b+','xyz');+------------------------------------------+| regexp_replace('aaabbbaaa', 'b+', 'xyz') |+------------------------------------------+| aaaxyzaaa |+------------------------------------------+Returned 1 row(s) in 0.11s

Ersetzen Sie ein Zeichenmuster durch Ersetzungstext, der den ursprünglichen übereinstimmenden Text enthält:

 > select regexp_replace('aaabbbaaa','(b+)','<\1>');+----------------------------------------------+| regexp_replace('aaabbbaaa', '(b+)', '<\1>') |+----------------------------------------------+| aaa<bbb>aaa |+----------------------------------------------+Returned 1 row(s) in 0.11s

Entfernen Sie alle Zeichen, die keine Ziffern sind:

REPEAT(STRING str, INT n) Zweck: Gibt die Argumentzeichenfolge zurück, die eine bestimmte Anzahl von Malen wiederholt wurde.

Rückgabetyp: STRING

REPLACE(STRING initial, STRING target, STRING replacement) Zweck: Gibt das Anfangsargument zurück, wobei alle Vorkommen der Zielzeichenfolge durch die Ersetzungszeichenfolge ersetzt werden.

Rückgabetyp: STRING

Hinweise zur Verwendung:

Da diese Funktion keine regulären Ausdrucksmuster verwendet, ist sie für einfache Zeichenfolgenersetzungen normalerweise schneller als REGEXP_REPLACE().

Wenn ein Argument NULL ist, ist der Rückgabewert NULL.

Matching ist case-sensitive.

Wenn die Ersetzungszeichenfolge eine andere Instanz der Zielzeichenfolge enthält, wird die Erweiterung nur einmal ausgeführt, anstatt erneut auf die neu erstellte Zeichenfolge angewendet zu werden.

Beispiele:

REVERSE(STRING a) Zweck: Gibt die Argumentzeichenfolge mit Zeichen in umgekehrter Reihenfolge zurück.

Rückgabetyp: STRING

RIGHT(STRING a, INT num_chars) Siehe die FunktionSTRRIGHT. RPAD(STRING str, INT len, STRING pad) Zweck: Gibt einen String der angegebenen Länge zurück, basierend auf dem ersten Argument string. Wenn die angegebene Zeichenfolge zu kurz ist, wird sie rechts mit einer sich wiederholenden Folge der Zeichen aus der Pad-Zeichenfolge aufgefüllt. Wenn die angegebene Zeichenfolge zu lang ist, wird sie rechts abgeschnitten.

Rückgabetyp: STRING

RTRIM(STRING a ) Zweck: Gibt die Argumentzeichenfolge mit allen Vorkommen von Zeichen zurück, die durch das zweite Argument angegeben wurden, das von der rechten Seite entfernt wurde. Entfernt Leerzeichen, wenn das zweite Argument nicht angegeben ist.

Rückgabetyp: STRING

LEERZEICHEN(INT n) Zweck: Gibt eine verkettete Zeichenfolge mit der angegebenen Anzahl von Leerzeichen zurück. Abkürzung fürrepeat(' ',n).

Rückgabetyp: STRING

SPLIT_PART(Zeichenfolgenquelle, Zeichenfolgentrennzeichen, BIGINT-Index) Zweck: Gibt den angefordertenindex-ten Teil der durch das Trennzeichen geteilten Eingabequellenzeichenfolge zurück.

  • Wenn index eine positive Zahl ist, wird der indexth-Teil von links innerhalb der Quellzeichenfolge zurückgegeben.
  • Wenn index eine negative Zahl ist, wird der indexth-Teil von rechts innerhalb der Quellzeichenfolge zurückgegeben.
  • Wenn Index 0 ist, gibt einen Fehler zurück.

Das Trennzeichen kann aus mehreren Zeichen bestehen, nicht nur aus einem einzelnen Zeichen.

Alle Übereinstimmungen des Trennzeichens werden genau durchgeführt, ohne dass reguläre Ausdrucksmuster verwendet werden.

Rückgabetyp: STRING

Beispiele:

SPLIT_PART('x,y,z',',',2) gibt 'y' zurück.

SPLIT_PART('one***two***three','***',2) gibt 'two' zurück.

SPLIT_PART('[email protected]@[email protected]@ghi', '@@', 3) gibt 'ghi' zurück.

SPLIT_PART('[email protected]@[email protected]@ghi', '@@', -3) gibt 'abc' zurück.

STRLEFT(STRING a, INT num_chars) Zweck: Gibt die Zeichen ganz links in der Zeichenfolge zurück. Abkürzung für einen Aufruf vonsubstr()mit 2 Argumenten.

Rückgabetyp: STRING

STRRIGHT(STRING a, INT num_chars) Zweck: Gibt die Zeichen ganz rechts der Zeichenfolge zurück. Abkürzung für einen Aufruf vonsubstr()mit 2 Argumenten.

Rückgabetyp: STRING

SUBSTR(STRING a, INT start ), SUBSTRING(STRING a, INT start ) Zweck: Gibt den Teil der Zeichenfolge zurück, der an einem bestimmten Punkt beginnt, optional mit einer angegebenen maximalen Länge. Die Zeichen in der Zeichenfolge werden ab 1 indiziert.

Rückgabetyp: STRING

TRANSLATE(STRING input, STRING from, STRING to) Zweck: Gibt die Zeichenfolgeinputzurück, wobei jedes Zeichen im Argumentfromdurch das entsprechende Zeichen im Argumenttoersetzt wird. Die Zeichen werden in der Reihenfolge abgeglichen, in der sie infromundtovorkommen.

Beispiel: translate ('hello world','world','earth') gibt 'hetta earth' zurück.

Rückgabetyp: STRING

Hinweise zur Verwendung:

Wenn from mehr Zeichen als to enthält, werden die from Zeichen, die die Länge von to überschreiten, im Ergebnis entfernt.

Zum Beispiel:

translate('abcdedg', 'bcd', '1') gibt 'a1eg' zurück.

translate('Unit Number#2', '# ', '_') gibt 'UnitNumber_2' zurück.

Wenn from NULL ist, gibt die Funktion NULL zurück.

Wenn to mehr Zeichen als from enthält, werden die zusätzlichen Zeichen in to ignoriert.

Wenn from doppelte Zeichen enthält, wird das doppelte Zeichen durch das erste übereinstimmende Zeichen in to ersetzt.

Beispiel: translate ('hello','ll','67') gibt 'he66o' zurück.

TRIM(STRING a) Zweck: Gibt die Eingabezeichenfolge mit entfernten führenden und nachgestellten Leerzeichen zurück. Das gleiche wie das Übergeben der Zeichenfolge durchLTRIM()undRTRIM().

Hinweise zur Verwendung: Wird häufig während der Datenbereinigung während des ETL-Zyklus verwendet, wenn Eingabewerte möglicherweise noch umgebende Leerzeichen enthalten. Eine allgemeinere Funktion, die neben Leerzeichen auch andere führende und nachfolgende Zeichen entfernen kann, finden Sie unter BTRIM().

Rückgabetyp: STRING

UPPER(STRING a), UCASE(STRING a) Zweck: Gibt die Argumentzeichenfolge zurück, die in Großbuchstaben konvertiert wurde.

Rückgabetyp: STRING

Hinweise zur Verwendung:

In Impala 2.5 und höher können Sie Abfragen vereinfachen, die viele UPPER() – und LOWER() -Aufrufe verwenden, um Vergleiche ohne Berücksichtigung der Groß- und Kleinschreibung durchzuführen, indem Sie stattdessen die Operatoren ILIKE oder IREGEXP verwenden.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.