- Categorias:
Funções de cadeia de caracteres e binários (Correspondência/Comparação)
LEFT¶
Retorna uma subcadeia de caracteres na extremidade esquerda de sua entrada.
LEFT(STR, N)
é equivalente a SUBSTR(STR, 1, N)
.
- Consulte também:
Sintaxe¶
LEFT( <string_expr> , <length_expr> )
Argumentos¶
string_expr
Uma expressão que é avaliada como um valor VARCHAR ou BINARY.
length_expr
Uma expressão que é avaliada como um inteiro. Especifica:
O número de caracteres UTF-8 a serem retornados se a entrada for um valor VARCHAR.
O número de bytes a serem retornados se a entrada for um valor BINARY.
Especifique um comprimento maior ou igual a zero. Se o comprimento for um número negativo, a função retorna uma cadeia de caracteres vazia.
Retornos¶
O tipo de dados do valor retornado é o mesmo que o tipo de dados do string_expr
(VARCHAR ou BINARY).
Se qualquer uma das entradas for NULL, NULL será retornado.
Notas de uso¶
Se length_expr
for maior que o comprimento de expr
, então a função retorna expr
.
Detalhes do agrupamento¶
O agrupamento se aplica às entradas VARCHAR. O agrupamento não se aplica se o tipo de dados de entrada do primeiro parâmetro for BINARY.
No impact. Embora o agrupamento seja aceito sintaticamente, os agrupamentos não afetam o processamento. Por exemplo, letras de dois e três caracteres em idiomas (por exemplo, «dzs» em húngaro ou «ch» em tcheco) ainda são contadas como dois ou três caracteres (não um caractere) para o argumento de comprimento.
The collation of the result is the same as the collation of the input. Isso pode ser útil se o valor retornado for passado para outra função como parte de chamadas de funções aninhadas.
Exemplos¶
Os exemplos a seguir usam a função LEFT.
Exemplo básico¶
SELECT LEFT('ABCDEF', 3);
+-------------------+
| LEFT('ABCDEF', 3) |
|-------------------|
| ABC |
+-------------------+
Como retornar substrings para cadeias de caracteres de e-mail, telefone e data¶
Os exemplos a seguir retornam substrings para informações do cliente em uma tabela.
Crie a tabela e insira os dados:
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 |
+---------+---------------------------------+--------------+-----------------+
Use a função com a função POSITION com a função LEFT para extrair o nome de usuário de endereços de e-mail. Este exemplo encontra a posição de @
em cada cadeia de caracteres e subtrai um para retornar o nome de usuário:
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 |
+---------+---------------------------------+---------------------+
Dica
É possível usar a função POSITION para encontrar a posição de outros caracteres, como um caractere vazio (' '
) ou um sublinhado (_
).
Na coluna cust_phone
da tabela, o código de área são sempre os três primeiros caracteres. Extraia o código de área dos números de telefone:
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 |
+---------+--------------+-----------+
Na coluna activation_date
da tabela, a data está sempre no formato YYYYMMDD
. Extraia o ano destas cadeias de caracteres:
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 |
+---------+-----------------+------+