LEFT

LEFT (왼쪽 부분 문자열)

입력의 가장 왼쪽 부분 문자열을 반환해요.

LEFT(STR, N)은 SUBSTR(STR, 1, N)과 동일해요.

출처: Snowflake SQL Reference - LEFT

본문

구문 (Syntax)

LEFT( <string_expr>, <length_expr> )

인자 (Arguments)

string_expr

VARCHAR 또는 BINARY 값으로 평가되는 표현식이에요.

length_expr

정수로 평가되는 표현식이에요. 다음을 지정해요:

  • 입력이 VARCHAR 값이면 반환할 UTF-8 문자 수.
  • 입력이 BINARY 값이면 반환할 바이트 수.

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

반환 값 (Returns)

반환된 값의 데이터 타입은 string_expr의 데이터 타입(VARCHAR 또는 BINARY)과 같아요.

입력 중 하나라도 NULL이면 NULL을 반환해요.

사용 참고 사항 (Usage notes)

length_expr이 expr의 길이보다 크면 함수는 expr을 반환해요.

데이터 정렬(Collation) 세부 사항

Collation은 VARCHAR 입력에 적용돼요. 첫 번째 파라미터의 입력 데이터 타입이 BINARY면 collation은 적용되지 않아요.

영향 없음(No impact): 문법적으로 collation이 허용되지만, collation은 처리를 변경하지 않아요. 예를 들어 언어의 두 글자/세 글자 문자(예: 헝가리어 'dzs'나 체코어 'ch')도 길이 인자에 대해 여전히 두 개 또는 세 개의 문자(한 개가 아니라)로 계산돼요.

결과의 collation은 입력의 collation과 같아요. 이는 반환된 값을 중첩 함수 호출의 일부로 다른 함수에 전달할 때 유용할 수 있어요.

예시 (Examples)

다음 예시들은 LEFT 함수를 사용해요.

기본 예시

SELECT LEFT('ABCDEF', 3);
+-------------------+
| 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, '[email protected]', '800-555-0100', '20210320'),
    (2, '[email protected]', '800-555-0101', '20240509'),
    (3, '[email protected]', '800-555-0102', '20191017');

SELECT * from customer_contact_example;
+---------+---------------------------------+--------------+-----------------+
| CUST_ID | CUST_EMAIL                      | CUST_PHONE   | ACTIVATION_DATE |
|---------+---------------------------------+--------------+-----------------|
|       1 | [email protected]           | 800-555-0100 | 20210320        |
|       2 | [email protected]     | 800-555-0101 | 20240509        |
|       3 | [email protected] | 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;
+---------+---------------------------------+---------------------+
| CUST_ID | CUST_EMAIL                      | USERNAME            |
|---------+---------------------------------+---------------------|
|       1 | [email protected]           | some_text           |
|       2 | [email protected]     | some_other_text     |
|       3 | [email protected] | some_different_text |
+---------+---------------------------------+---------------------+

팁: POSITION 함수를 사용해 빈 문자(' ')나 밑줄(_) 같은 다른 문자의 위치를 찾을 수도 있어요.

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

테이블의 activation_date 열에서 날짜는 항상 YYYYMMDD 형식이에요. 이 문자열들에서 연도를 추출해요:

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

더 알아보기 (Learn more)