카테고리:

문자열 및 이진 함수 (일치/비교)

LEFT

입력값의 맨 왼쪽 하위 문자열을 반환합니다.

LEFT(STR, N)SUBSTR(STR, 1, N) 과 동등합니다.

참고 항목:

RIGHT , SUBSTR , SUBSTRING

구문

LEFT( <string_expr> , <length_expr> )
Copy

인자

string_expr

VARCHAR 또는 BINARY 값으로 평가되는 식입니다.

length_expr

정수로 평가되는 식입니다. 이 식에서 지정하는 사항은 다음과 같습니다.

  • 입력이 VARCHAR 값인 경우 반환할 UTF-8 문자 수입니다.

  • 입력이 BINARY 값인 경우 반환할 바이트 수입니다.

0보다 크거나 같은 길이를 지정합니다. 길이가 음수이면 함수는 빈 문자열을 반환합니다.

반환

반환된 값의 데이터 타입은 string_expr (VARCHAR 또는 BINARY)의 데이터 타입과 동일합니다.

입력 중 하나라도 NULL인 경우, NULL이 반환됩니다.

사용법 노트

length_exprexpr 의 길이보다 큰 경우, 함수는 expr 을 반환합니다.

데이터 정렬 세부 정보

  • 데이터 정렬은 VARCHAR 입력에 적용됩니다. 첫 번째 매개 변수의 입력 데이터 타입이 BINARY인 경우 데이터 정렬이 적용되지 않습니다.

  • No impact. 데이터 정렬이 구문적으로 허용되지만, 데이터 정렬은 처리에 영향을 주지 않습니다. 예를 들어, 언어에서 2자 및 3자로 구성된 문자(예: 헝가리어의 “dzs”, 체코어의 “ch”)라도 여전히 길이 인자에 대해 2개 또는 3개의 문자(한 문자가 아님)로 계산됩니다.

  • The collation of the result is the same as the collation of the input. 이는 반환된 값이 중첩 함수 호출의 일부로서 다른 함수에 전달되는 경우에 유용할 수 있습니다.

다음 예제에서는 LEFT 함수를 사용합니다.

기본 예제

SELECT LEFT('ABCDEF', 3);
Copy
+-------------------+
| LEFT('ABCDEF', 3) |
|-------------------|
| ABC               |
+-------------------+

이메일, 전화번호 및 날짜 문자열의 하위 문자열 반환하기

다음 예에서는 테이블의 고객 정보에 대한 하위 문자열을 반환합니다.

테이블을 만들고 데이터를 삽입합니다.

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

POSITION 함수와 LEFT 함수를 함께 사용하여 이메일 주소에서 사용자 이름을 추출합니다. 이 예에서는 각 문자열에서 @ 의 위치를 찾은 다음 1을 빼서 사용자 이름을 반환합니다.

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

POSITION 함수를 사용하면 빈 문자(' ')나 밑줄(_)과 같은 다른 문자의 위치를 찾을 수 있습니다.

테이블의 cust_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       |
+---------+--------------+-----------+

테이블의 activation_date 열에서 날짜는 항상 YYYYMMDD 형식으로 되어 있습니다. 다음 문자열에서 연도를 추출합니다.

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