본문으로 건너뛰기
최종 수정: 에

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을 반환합니다.

예제​

  1. 기본 왼쪽 패딩
SELECT LPAD('hi', 5, 'xy'), LPAD('hello', 8, '*');
+---------------------+-----------------------+
| LPAD('hi', 5, 'xy') | LPAD('hello', 8, '*') |
+---------------------+-----------------------+
| xyxhi | ***hello |
+---------------------+-----------------------+
  1. 문자열 잘라내기
SELECT LPAD('hi', 1, 'xy'), LPAD('hello world', 5, 'x');
+---------------------+------------------------------+
| LPAD('hi', 1, 'xy') | LPAD('hello world', 5, 'x') |
+---------------------+------------------------------+
| h | hello |
+---------------------+------------------------------+
  1. 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 |
+---------------------+------------------------+----------------------+
  1. 빈 문자열과 길이가 영인 경우
SELECT LPAD('', 0, ''), LPAD('hi', 0, 'x'), LPAD('', 5, '*');
+-----------------+--------------------+------------------+
| LPAD('', 0, '') | LPAD('hi', 0, 'x') | LPAD('', 5, '*') |
+-----------------+--------------------+------------------+
| | | ***** |
+-----------------+--------------------+------------------+
  1. 빈 패딩 문자열
SELECT LPAD('hello', 10, ''), LPAD('hi', 2, '');
+-----------------------+-------------------+
| LPAD('hello', 10, '') | LPAD('hi', 2, '') |
+-----------------------+-------------------+
| | hi |
+-----------------------+-------------------+
  1. 더 긴 패딩 문자열(len에 도달할 때까지 반복)
SELECT LPAD('123', 10, 'abc'), LPAD('X', 7, 'HELLO');
+------------------------+-----------------------+
| LPAD('123', 10, 'abc') | LPAD('X', 7, 'HELLO') |
+------------------------+-----------------------+
| abcabca123 | HELLOHX |
+------------------------+-----------------------+
  1. UTF-8 멀티바이트 패딩
SELECT LPAD('hello', 10, 'ṭṛì'), LPAD('ḍḍumai', 3, 'x');
+-------------------------------+----------------------------+
| LPAD('hello', 10, 'ṭṛì') | LPAD('ḍḍumai', 3, 'x') |
+-------------------------------+----------------------------+
| ṭṛìṭṛhello | ḍḍu |
+-------------------------------+----------------------------+
  1. 숫자 문자열을 영으로 패딩
SELECT LPAD('42', 6, '0'), LPAD('1234', 8, '0');
+--------------------+----------------------+
| LPAD('42', 6, '0') | LPAD('1234', 8, '0') |
+--------------------+----------------------+
| 000042 | 00001234 |
+--------------------+----------------------+
  1. 음수 길이
SELECT LPAD('hello', -1, 'x'), LPAD('test', -5, '*');
+------------------------+-----------------------+
| LPAD('hello', -1, 'x') | LPAD('test', -5, '*') |
+------------------------+-----------------------+
| NULL | NULL |
+------------------------+-----------------------+