- Catégories :
Fonctions de chaîne et fonctions binaires (Correspondance/Comparaison)
LEFT¶
Renvoie une sous-chaîne située le plus à gauche de son entrée.
LEFT(STR, N)
équivaut à SUBSTR(STR, 1, N)
.
- Voir aussi ::
Syntaxe¶
LEFT( <string_expr> , <length_expr> )
Arguments¶
string_expr
Une expression qui est évaluée sur une valeur VARCHAR ou BINARY.
length_expr
Une expression qui donne un entier. Elle spécifie :
Le nombre de caractères UTF-8 à renvoyer si l’entrée est une valeur VARCHAR.
Le nombre d’octets à renvoyer si l’entrée est une valeur BINARY.
Spécifiez une longueur supérieure ou égale à zéro. Si la longueur est un nombre négatif, la fonction renvoie une chaîne vide.
Renvoie¶
Le type de données de la valeur renvoyée est identique à celui du type de données de string_expr
(VARCHAR ou BINARY).
Si l’une des entrées est NULL, NULL est renvoyé.
Notes sur l’utilisation¶
Si length_expr
est supérieure à la longueur expr
, alors la fonction renvoie expr
.
Détails du classement¶
Le classement s’applique aux entrées VARCHAR. Le classement ne s’applique pas si le type de données en entrée du premier paramètre est BINARY.
No impact. Bien que le classement soit accepté syntaxiquement, les classements n’affectent pas le traitement. Par exemple, les lettres à deux et trois caractères dans les langues (par exemple, « dzs » en hongrois ou « ch » en tchèque) sont toujours comptées comme deux ou trois caractères (et non comme un seul caractère) pour l’argument de longueur.
The collation of the result is the same as the collation of the input. Cela peut être utile si la valeur renvoyée est transmise à une autre fonction dans le cadre d’appels de fonctions imbriquées.
Exemples¶
Les exemples suivants utilisent la fonction LEFT.
Exemple de base¶
SELECT LEFT('ABCDEF', 3);
+-------------------+
| LEFT('ABCDEF', 3) |
|-------------------|
| ABC |
+-------------------+
Renvoyer des sous-chaînes pour les chaînes d’e-mail, de téléphone et de date¶
Les exemples suivants renvoient des sous-chaînes d’informations clientes dans une table.
Créez la table et insérez les données :
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 |
+---------+---------------------------------+--------------+-----------------+
Utilisez la fonction POSITION avec la fonction LEFT pour extraire le nom d’utilisateur à partir des adresses e-mail. Cet exemple trouve la position de @
dans chaque chaîne et soustrait un pour renvoyer le nom d’utilisateur :
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 |
+---------+---------------------------------+---------------------+
Astuce
Vous pouvez utiliser la fonction POSITION permettant de trouver la position d’autres caractères, comme un caractère vide (' '
) ou un trait de soulignement (_
).
Dans la colonne cust_phone
de la table, l’indicatif régional correspond toujours aux trois premiers caractères. Extrayez l’indicatif régional des numéros de téléphone :
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 |
+---------+--------------+-----------+
Dans la colonne activation_date
de la table, la date est toujours au format YYYYMMDD
. Extrayez l’année de ces chaînes :
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 |
+---------+-----------------+------+