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:

RIGHT , SUBSTR , SUBSTRING

Sintaxe

LEFT( <string_expr> , <length_expr> )
Copy

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);
Copy
+-------------------+
| 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;
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        |
+---------+---------------------------------+--------------+-----------------+

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

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