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

RIGHT, SUBSTR , SUBSTRING

Syntaxe

LEFT( <string_expr> , <length_expr> ) 
Copy

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); 
Copy
+-------------------+ | 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; 
Copy
+---------+---------------------------------+--------------+-----------------+ | 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; 
Copy
+---------+---------------------------------+---------------------+ | 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; 
Copy
+---------+--------------+-----------+ | 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; 
Copy
+---------+-----------------+------+ | CUST_ID | ACTIVATION_DATE | YEAR | |---------+-----------------+------| | 1 | 20210320 | 2021 | | 2 | 20240509 | 2024 | | 3 | 20191017 | 2019 | +---------+-----------------+------+