최종 수정: 에
LPAD
설명
LPAD 함수(Left Padding)는 문자열의 길이가 지정한 길이에 도달할 때까지 왼쪽에 지정한 문자를 채웁니다. 목표 길이가 원본 문자열의 길이보다 짧으면 문자열을 잘라냅니다.
구문
LPAD(<str>, <len>, <pad>)
매개변수
| 매개변수 | 설명 |
|---|---|
<str> | 패딩할 원본 문자열입니다. 타입: VARCHAR |
<len> | 목표 문자열 길이입니다. 바이트 수가 아닌 문자 수를 기준으로 합니다. 타입: INT |
<pad> | 패딩에 사용할 문자열입니다. 타입: VARCHAR |
반환 값
패딩하거나 잘라낸 문자열을 VARCHAR 타입으로 반환합니다.
패딩 규칙:
- len > 원본 문자열 길이: 전체 길이가 len에 도달할 때까지 왼쪽에 pad 문자열을 반복해서 채웁니다.
- len = 원본 문자열 길이: 원본 문자열을 반환합니다.
- len < 원본 문자열 길이: 문자열을 잘라내고 처음 len개의 문자만 반환합니다.
- 문자 수를 기준으로 계산하며 UTF-8 멀티바이트 문자를 지원합니다.
특수한 경우:
- 매개변수 중 하나라도 NULL이면 NULL을 반환합니다.
- pad가 빈 문자열이고 len > str의 길이이면 빈 문자열을 반환합니다.
- len이 0이면 빈 문자열을 반환합니다.
- len이 음수이면 NULL을 반환합니다.
예제
- 기본 왼쪽 패딩
SELECT LPAD('hi', 5, 'xy'), LPAD('hello', 8, '*');
+---------------------+-----------------------+
| LPAD('hi', 5, 'xy') | LPAD('hello', 8, '*') |
+---------------------+-----------------------+
| xyxhi | ***hello |
+---------------------+-----------------------+
- 문자열 잘라내기
SELECT LPAD('hi', 1, 'xy'), LPAD('hello world', 5, 'x');
+---------------------+------------------------------+
| LPAD('hi', 1, 'xy') | LPAD('hello world', 5, 'x') |
+---------------------+------------------------------+
| h | hello |
+---------------------+------------------------------+
- NULL 값 처리
SELECT LPAD(NULL, 5, 'x'), LPAD('hi', NULL, 'x'), LPAD('hi', 5, NULL);
+---------------------+------------------------+----------------------+
| LPAD(NULL, 5, 'x') | LPAD('hi', NULL, 'x') | LPAD('hi', 5, NULL) |
+---------------------+------------------------+----------------------+
| NULL | NULL | NULL |
+---------------------+------------------------+----------------------+
- 빈 문자열과 길이가 영인 경우
SELECT LPAD('', 0, ''), LPAD('hi', 0, 'x'), LPAD('', 5, '*');
+-----------------+--------------------+------------------+
| LPAD('', 0, '') | LPAD('hi', 0, 'x') | LPAD('', 5, '*') |
+-----------------+--------------------+------------------+
| | | ***** |
+-----------------+--------------------+------------------+
- 빈 패딩 문자열
SELECT LPAD('hello', 10, ''), LPAD('hi', 2, '');
+-----------------------+-------------------+
| LPAD('hello', 10, '') | LPAD('hi', 2, '') |
+-----------------------+-------------------+
| | hi |
+-----------------------+-------------------+
- 더 긴 패딩 문자열(len에 도달할 때까지 반복)
SELECT LPAD('123', 10, 'abc'), LPAD('X', 7, 'HELLO');
+------------------------+-----------------------+
| LPAD('123', 10, 'abc') | LPAD('X', 7, 'HELLO') |
+------------------------+-----------------------+
| abcabca123 | HELLOHX |
+------------------------+-----------------------+
- UTF-8 멀티바이트 패딩
SELECT LPAD('hello', 10, 'ṭṛì'), LPAD('ḍḍumai', 3, 'x');
+-------------------------------+----------------------------+
| LPAD('hello', 10, 'ṭṛì') | LPAD('ḍḍumai', 3, 'x') |
+-------------------------------+----------------------------+
| ṭṛìṭṛhello | ḍḍu |
+-------------------------------+----------------------------+
- 숫자 문자열을 영으로 패딩
SELECT LPAD('42', 6, '0'), LPAD('1234', 8, '0');
+--------------------+----------------------+
| LPAD('42', 6, '0') | LPAD('1234', 8, '0') |
+--------------------+----------------------+
| 000042 | 00001234 |
+--------------------+----------------------+
- 음수 길이
SELECT LPAD('hello', -1, 'x'), LPAD('test', -5, '*');
+------------------------+-----------------------+
| LPAD('hello', -1, 'x') | LPAD('test', -5, '*') |
+------------------------+-----------------------+
| NULL | NULL |
+------------------------+-----------------------+