- Kategorien:
Zeichenfolgen- und Binärfunktionen (Abgleich/Vergleich)
LEFT¶
Gibt eine Zeichenfolge ganz links von der Eingabe zurück.
LEFT(STR, N)
ist äquivalent zu SUBSTR(STR, 1, N)
.
- Siehe auch::
Syntax¶
LEFT( <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 LEFT.
Grundlegendes Beispiel¶
SELECT LEFT('ABCDEF', 3);
+-------------------+
| LEFT('ABCDEF', 3) |
|-------------------|
| ABC |
+-------------------+
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 POSITION-Funktion mit der LEFT-Funktion, um den Benutzernamen aus E-Mail-Adressen zu extrahieren. Dieses Beispiel findet die Position von @
in jeder Zeichenfolge und subtrahiert eins, um den Benutzernamen zurückzugeben:
SELECT cust_id,
cust_email,
LEFT(cust_email, POSITION('@' IN cust_email) - 1) AS username
FROM customer_contact_example;
+---------+---------------------------------+---------------------+
| CUST_ID | CUST_EMAIL | USERNAME |
|---------+---------------------------------+---------------------|
| 1 | some_text@example.com | some_text |
| 2 | some_other_text@example.org | some_other_text |
| 3 | some_different_text@example.net | some_different_text |
+---------+---------------------------------+---------------------+
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 Vorwahl aus Telefonnummern:
SELECT cust_id,
cust_phone,
LEFT(cust_phone, 3) AS area_code
FROM customer_contact_example;
+---------+--------------+-----------+
| CUST_ID | CUST_PHONE | AREA_CODE |
|---------+--------------+-----------|
| 1 | 800-555-0100 | 800 |
| 2 | 800-555-0101 | 800 |
| 3 | 800-555-0102 | 800 |
+---------+--------------+-----------+
In der Spalte activation_date
in der Tabelle wird das Datum immer im Format YYYYMMDD
angezeigt. Extrahieren Sie das Jahr aus diesen Zeichenfolgen:
SELECT cust_id,
activation_date,
LEFT(activation_date, 4) AS year
FROM customer_contact_example;
+---------+-----------------+------+
| CUST_ID | ACTIVATION_DATE | YEAR |
|---------+-----------------+------|
| 1 | 20210320 | 2021 |
| 2 | 20240509 | 2024 |
| 3 | 20191017 | 2019 |
+---------+-----------------+------+