MySQL에서 LPAD() 또는 RPAD() 함수를 사용할 때, 원본 문자열의 길이가 두 번째 인자로 지정한 길이보다 크면 패딩 문자는 전혀 추가되지 않습니다. 대신 MySQL은 지정된 길이만큼 원본 문자열을 잘라내어(truncate) 반환합니다.
동작 예시
mysql> Select LPAD('ABCD',3,'*');
+--------------------+
| LPAD('ABCD',3,'*') |
+--------------------+
| ABC |
+--------------------+
1 row in set (0.00 sec)
mysql> Select RPAD('ABCD',3,'*');
+--------------------+
| RPAD('ABCD',3,'*') |
+--------------------+
| ABC |
+--------------------+
1 row in set (0.00 sec)결과 분석
위 예시를 보면, 원본 문자열 'ABCD'는 4글자인데 지정된 길이는 3입니다. 이 경우 두 함수 모두 패딩 문자 '*'를 붙이지 않고, 인자로 지정된 길이인 3에 맞춰 원본 문자열을 왼쪽부터 잘라낸 'ABC'를 그대로 반환하는 것을 확인할 수 있습니다.
즉, LPAD()와 RPAD()는 다음과 같이 동작합니다.
- 원본 문자열 길이 < 지정된 길이: 부족한 만큼 패딩 문자를 채워 반환
- 원본 문자열 길이 = 지정된 길이: 원본 문자열을 그대로 반환
- 원본 문자열 길이 > 지정된 길이: 패딩 없이 지정된 길이만큼 잘라내어 반환
이러한 특성을 이해하면 데이터 정규화나 고정 길이 필드 처리 시 의도치 않은 데이터 손실을 방지할 수 있습니다.