LEFT
LEFT (왼쪽 부분 문자열)
입력의 가장 왼쪽 부분 문자열을 반환해요.
LEFT(STR, N)은 SUBSTR(STR, 1, N)과 동일해요.
본문
구문 (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)
- String & binary functions — 문자열·이진 함수 모음
- RIGHT — 오른쪽 부분 문자열
- SUBSTR — 부분 문자열 추출
- POSITION — 문자열 위치 찾기