MySQL RPAD() 함수로 문자열 길이에 따라 별(*) 추가하기
문자열의 길이를 기준으로 그 뒤에 별(*) 문자를 덧붙이고 싶다면 RPAD() 함수를 활용하면 됩니다. RPAD()는 지정한 길이만큼 문자열을 오른쪽으로 채워주는 함수로, IF 조건문과 함께 사용하면 길이에 따라 다른 길이의 별을 붙일 수 있습니다.
아래 예제를 통해 단계별로 살펴보겠습니다.
1단계: 테이블 생성
먼저 이름을 저장할 간단한 테이블을 생성합니다.
mysql> create table DemoTable1626
-> (
-> Name varchar(20)
-> );
Query OK, 0 rows affected (0.37 sec)
2단계: 샘플 데이터 삽입
INSERT 명령어를 사용해 몇 개의 레코드를 입력합니다.
mysql> insert into DemoTable1626 values('Chris');
Query OK, 1 row affected (0.11 sec)
mysql> insert into DemoTable1626 values('Bob');
Query OK, 1 row affected (0.34 sec)
mysql> insert into DemoTable1626 values('Robert');
Query OK, 1 row affected (0.13 sec)3단계: 저장된 데이터 확인
SELECT 문으로 테이블의 모든 레코드를 조회해 보겠습니다.
mysql> select * from DemoTable1626;
실행 결과는 다음과 같습니다.
+--------+
| Name |
+--------+
| Chris |
| Bob |
| Robert |
+--------+
3 rows in set (0.00 sec)
4단계: 문자열 길이에 따라 별 추가하는 쿼리 실행
이제 핵심인 쿼리입니다. LENGTH() 함수로 문자열 길이를 구하고, IF() 조건문으로 길이가 5 이상이면 전체 길이를 10으로, 그렇지 않으면 7로 지정한 뒤 RPAD()로 남은 공간을 '*' 문자로 채웁니다.
mysql> select rpad(Name,if(length(Name) >= 5,10,7),'*') from DemoTable1626;
실행 결과는 다음과 같습니다.
+-------------------------------------------+
| rpad(Name,if(length(Name) >= 5,10,7),'*') |
+-------------------------------------------+
| Chris***** |
| Bob**** |
| Robert**** |
+-------------------------------------------+
3 rows in set (0.00 sec)
결과 분석
위 결과를 보면 동작 방식을 쉽게 이해할 수 있습니다.
- 'Chris'는 길이가 5이므로 조건(≥5)을 만족해 총 길이 10까지 채워져 'Chris*****'가 됩니다.
- 'Bob'은 길이가 3이므로 조건을 만족하지 않아 총 길이 7까지 채워져 'Bob****'가 됩니다.
- 'Robert'는 길이가 6이므로 조건을 만족해 총 길이 10까지 채워져 'Robert****'가 됩니다.
이처럼 RPAD()와 IF(), LENGTH() 함수를 조합하면 문자열 길이에 따라 원하는 개수만큼 특정 문자를 유연하게 추가할 수 있습니다. 비슷한 방식으로 왼쪽에 문자를 채우고 싶다면 LPAD() 함수를 사용하면 됩니다.