- Kategorien:
Zeichenfolgen- und Binärfunktionen (Abgleich/Vergleich)
RIGHT¶
Gibt eine Teilzeichenfolge ganz rechts von der Eingabe zurück.
RIGHT(STR, N)
ist äquivalent zu SUBSTR(STR, LENGTH(STR)-N+1, N)
.
- Siehe auch::
Syntax¶
RIGHT( <string_expr> , <length_expr> )
Argumente¶
string_expr
Ein Ausdruck, der einen VARCHAR- oder BINARY-Wert ergibt.
length_expr
Ein Ausdruck, der zu einer Ganzzahl ausgewertet wird. Er legt Folgende fest:
Die Anzahl der UTF-8 Zeichen, die zurückgegeben werden, wenn die Eingabe ein VARCHAR-Wert ist.
Die Anzahl der Bytes, die zurückgegeben werden, wenn die Eingabe ein BINARY-Wert ist.
Geben Sie eine Länge an, die größer als oder gleich Null ist. Wenn die Länge eine negative Zahl ist, gibt die Funktion eine leere Zeichenfolge zurück.
Rückgabewerte¶
Der Datentyp des zurückgegebenen Wertes ist derselbe wie der Datentyp von string_expr
(VARCHAR oder BINARY).
Wenn eine der Eingaben NULL ist, wird NULL zurückgegeben.
Nutzungshinweise¶
Wenn die Länge von length_expr
größer als die Länge von expr
ist, gibt die Funktion den Wert expr
zurück.
Sortierungsdetails¶
Sortierung gilt für VARCHAR-Eingaben. Die Sortierung wird nicht angewendet, wenn der Eingabedatentyp des ersten Parameters BINARY ist.
No impact. Obwohl die Sortierung syntaktisch akzeptiert wird, hat die Sortierung keinen Einfluss auf die Verarbeitung. So zählen zum Beispiel Sprachen mit zwei- und dreistellige Buchstaben (z. B. „dzs“ im Ungarischen oder „ch“ im Tschechischen) immer noch als zwei bzw. drei Zeichen (und nicht als ein Zeichen) für das Längenargument.
The collation of the result is the same as the collation of the input. Dies kann nützlich sein, wenn der zurückgegebene Wert als Teil verschachtelter Funktionsaufrufe an eine andere Funktion übergeben wird.
Beispiele¶
Die folgenden Beispiele verwenden die Funktion RIGHT.
Grundlegendes Beispiel¶
SELECT RIGHT('ABCDEFG', 3);
+---------------------+
| RIGHT('ABCDEFG', 3) |
|---------------------|
| EFG |
+---------------------+
Rückgabe von Teilzeichenfolgen für E-Mail, Telefon und Datum¶
Die folgenden Beispiele geben Teilzeichenketten für Kundeninformationen in einer Tabelle zurück.
Erstellen Sie die Tabelle und fügen Sie Daten ein:
CREATE OR REPLACE TABLE customer_contact_example (
cust_id INT,
cust_email VARCHAR,
cust_phone VARCHAR,
activation_date VARCHAR)
AS SELECT
column1,
column2,
column3,
column4
FROM
VALUES
(1, 'some_text@example.com', '800-555-0100', '20210320'),
(2, 'some_other_text@example.org', '800-555-0101', '20240509'),
(3, 'some_different_text@example.net', '800-555-0102', '20191017');
SELECT * from customer_contact_example;
+---------+---------------------------------+--------------+-----------------+
| CUST_ID | CUST_EMAIL | CUST_PHONE | ACTIVATION_DATE |
|---------+---------------------------------+--------------+-----------------|
| 1 | some_text@example.com | 800-555-0100 | 20210320 |
| 2 | some_other_text@example.org | 800-555-0101 | 20240509 |
| 3 | some_different_text@example.net | 800-555-0102 | 20191017 |
+---------+---------------------------------+--------------+-----------------+
Verwenden Sie die Funktionen LENGTH und POSITION mit der Funktion RIGHT, um die Domänen aus E-Mail-Adressen zu extrahieren. In diesem Beispiel wird zunächst die Länge der Eingabezeichenfolgen ermittelt und dann die Position von @
in jeder Zeichenfolge subtrahiert, um die Länge des Bereichs zu bestimmen:
SELECT cust_id,
cust_email,
RIGHT(cust_email, LENGTH(cust_email) - (POSITION('@' IN cust_email))) AS domain
FROM customer_contact_example;
+---------+---------------------------------+-------------+
| CUST_ID | CUST_EMAIL | DOMAIN |
|---------+---------------------------------+-------------|
| 1 | some_text@example.com | example.com |
| 2 | some_other_text@example.org | example.org |
| 3 | some_different_text@example.net | example.net |
+---------+---------------------------------+-------------+
Tipp
Sie können die Funktion POSITION verwenden, um die Position anderer Zeichen zu finden, z. B. ein leeres Zeichen (' '
) oder einen Unterstrich (_
).
In der Spalte cust_phone
in der Tabelle sind die ersten drei Zeichen immer die Vorwahl. Extrahieren Sie die Telefonnummern ohne die Ortsvorwahlen:
SELECT cust_id,
cust_phone,
RIGHT(cust_phone, 8) AS phone_without_area_code
FROM customer_contact_example;
+---------+--------------+-------------------------+
| CUST_ID | CUST_PHONE | PHONE_WITHOUT_AREA_CODE |
|---------+--------------+-------------------------|
| 1 | 800-555-0100 | 555-0100 |
| 2 | 800-555-0101 | 555-0101 |
| 3 | 800-555-0102 | 555-0102 |
+---------+--------------+-------------------------+
In der Spalte activation_date
in der Tabelle wird das Datum immer im Format YYYYMMDD
angezeigt. Tag aus diesen Zeichenfolgen extrahieren:
SELECT cust_id,
activation_date,
RIGHT(activation_date, 2) AS day
FROM customer_contact_example;
+---------+-----------------+-----+
| CUST_ID | ACTIVATION_DATE | DAY |
|---------+-----------------+-----|
| 1 | 20210320 | 20 |
| 2 | 20240509 | 09 |
| 3 | 20191017 | 17 |
+---------+-----------------+-----+