- 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 |
+---------+-----------------+------+