REPEAT() 함수는 지정한 문자열을 원하는 횟수만큼 반복해서 출력해 주는 MySQL 내장 함수입니다. 하지만 기본 상태로 사용하면 반복된 값들이 붙어 있어 결과를 한눈에 파악하기 어려울 수 있습니다. 이럴 때 REPEAT() 함수를 다른 함수와 함께 조합하면 출력 결과를 훨씬 더 읽기 쉽게 만들 수 있습니다.
CONCAT() 함수와 함께 사용하기
예를 들어, 반복되는 값 사이에 공백이나 특정 문자를 삽입하고 싶다면 CONCAT() 함수를 활용할 수 있습니다. 아래 예제에서는 과목명 앞뒤에 별표(*)와 공백을 붙여 각 값을 3번 반복 출력합니다.
mysql> Select REPEAT(CONCAT(' *',Subject,'* '),3)AS Subject_repetition from student;
+-----------------------------------------+
| Subject_repetition |
+-----------------------------------------+
| *Computers* *Computers* *Computers* |
| *History* *History* *History* |
| *Commerce* *Commerce* *Commerce* |
| *Computers* *Computers* *Computers* |
| *Math* *Math* *Math* |
+-----------------------------------------+
5 rows in set (0.00 sec)
결과에서 볼 수 있듯이, CONCAT() 함수 덕분에 각 반복 값 사이에 자연스럽게 구분이 생겨 가독성이 크게 향상되었습니다.
QUOTE() 함수까지 함께 활용하기
나아가 QUOTE() 함수와 CONCAT() 함수를 모두 REPEAT() 함수와 결합하면, 각 반복 값이 따옴표로 감싸져 더욱 명확하게 구분됩니다.
mysql> Select REPEAT(QUOTE(CONCAT(' *',Subject,'* ')),3)AS Subject_repetition from student;
+-----------------------------------------------+
| Subject_repetition |
+-----------------------------------------------+
| ' *Computers* '' *Computers* '' *Computers* ' |
| ' *History* '' *History* '' *History* ' |
| ' *Commerce* '' *Commerce* '' *Commerce* ' |
| ' *Computers* '' *Computers* '' *Computers* ' |
| ' *Math* '' *Math* '' *Math* ' |
+-----------------------------------------------+
5 rows in set (0.00 sec)
정리
이처럼 REPEAT() 함수는 단독으로 사용하기보다 CONCAT(), QUOTE() 같은 다른 문자열 함수와 조합할 때 그 진가가 드러납니다. 함수들을 적절히 중첩하여 사용하면 반복 문자열의 구분이 명확해지고, 쿼리 결과의 전반적인 가독성과 완성도를 크게 높일 수 있습니다.