하나의 쿼리에서 LPAD()와 RPAD()를 동시에 사용하기
MySQL의 LPAD() 함수는 문자열의 왼쪽을, RPAD() 함수는 문자열의 오른쪽을 지정한 문자로 채우는 역할을 합니다. 그렇다면 하나의 쿼리에서 이 두 함수를 동시에 사용하여 원본 문자열의 왼쪽과 오른쪽 모두에 문자를 채우려면 어떻게 해야 할까요?
핵심은 한 함수를 다른 함수의 첫 번째 인수로 중첩해서 사용하는 것입니다. 즉, RPAD() 함수를 LPAD() 함수의 첫 번째 인수로 넣거나, 반대로 LPAD() 함수를 RPAD() 함수의 첫 번째 인수로 넣으면 됩니다. 아래 예제를 통해 쉽게 이해할 수 있습니다.
예제 1: LPAD()를 RPAD()의 인수로 사용
mysql> Select RPAD(LPAD(' My name is Ram ',23,'* '),30,'* ');
+------------------------------------------------+
| RPAD(LPAD(' My name is Ram ',23,'* '),30,'* ') |
+------------------------------------------------+
| * * * * My name is Ram * * * * |
+------------------------------------------------+
1 row in set (0.00 sec)위 쿼리에서는 LPAD() 함수가 RPAD() 함수의 첫 번째 인수로 사용되었습니다. 먼저 LPAD()가 전체 길이를 23으로 맞추며 문자열 왼쪽에 '* '를 채우고, 이어서 RPAD()가 전체 길이를 30으로 맞추며 오른쪽에 '* '를 채웁니다.
예제 2: RPAD()를 LPAD()의 인수로 사용
mysql> Select LPAD(RPAD(' My name is Ram ',23,'* '),30,'* ');
+------------------------------------------------+
| LPAD(RPAD(' My name is Ram ',23,'* '),30,'* ') |
+------------------------------------------------+
| * * * * My name is Ram * * * * |
+------------------------------------------------+
1 row in set (0.00 sec)위 쿼리에서는 반대로 RPAD() 함수가 LPAD() 함수의 첫 번째 인수로 사용되었습니다. 내부 함수가 먼저 실행된다는 점만 다를 뿐, 최종 결과는 앞선 예제와 동일하게 문자열의 양쪽에 '* '가 채워진 것을 확인할 수 있습니다.