MySQL에서는 SUBSTRING() 함수를 사용하여 SELECT 쿼리 결과로 반환되는 긴 텍스트 필드의 길이를 손쉽게 제한할 수 있습니다. 이 함수는 지정한 시작 위치부터 원하는 문자 수만큼만 잘라서 반환해 주기 때문에, 게시글 목록 화면 등에서 요약 텍스트를 표시할 때 특히 유용합니다.
SUBSTRING() 기본 문법
SELECT SUBSTRING(yourColumnName, 1, yourIntegerValueToGetTheCharacters) AS anyVariableName FROM yourTableName;
위 문법에서 첫 번째 인자는 대상 컬럼명, 두 번째 인자는 시작 위치(1부터 시작), 세 번째 인자는 가져올 문자 개수입니다.
예제 테이블 생성
문법을 제대로 이해하기 위해 LONGTEXT 타입의 컬럼을 가진 테이블을 먼저 만들어 보겠습니다.
mysql> create table limitLengthOfLongTextDemo
-> (
-> sentence LONGTEXT
-> );
Query OK, 0 rows affected (0.74 sec)샘플 데이터 삽입
INSERT 명령을 사용하여 몇 개의 레코드를 추가합니다.
mysql> insert into limitLengthOfLongTextDemo values('This is the introduction to MySQL');
Query OK, 1 row affected (0.17 sec)
mysql> insert into limitLengthOfLongTextDemo values('PL/SQL is the extension of Structured Query Language');
Query OK, 1 row affected (0.19 sec)
mysql> insert into limitLengthOfLongTextDemo values('Java is an Object Oriented Programming Language');
Query OK, 1 row affected (0.20 sec)전체 데이터 조회
SELECT문으로 테이블의 모든 레코드를 확인합니다.
mysql> select *from limitLengthOfLongTextDemo;
실행 결과는 다음과 같습니다.
+------------------------------------------------------+ | sentence | +------------------------------------------------------+ | This is the introduction to MySQL | | PL/SQL is the extension of Structured Query Language | | Java is an Object Oriented Programming Language | +------------------------------------------------------+ 3 rows in set (0.00 sec)
SUBSTRING()으로 길이 제한하기
이제 SUBSTRING() 함수를 사용하여 각 문장에서 앞 26자만 추출해 보겠습니다.
mysql> select substring(sentence,1,26) as 26Characters from limitLengthOfLongTextDemo;
실행 결과는 다음과 같습니다.
+----------------------------+ | 26Characters | +----------------------------+ | This is the introduction t | | PL/SQL is the extension of | | Java is an Object Oriented | +----------------------------+ 3 rows in set (0.00 sec)
결과를 보면 모든 문장이 정확히 26자까지만 잘려서 출력된 것을 확인할 수 있습니다. 이처럼 SUBSTRING() 함수를 활용하면 별도의 애플리케이션 후처리 작업 없이 SQL 단계에서 바로 원하는 길이만큼 텍스트를 잘라낼 수 있어, 데이터 전송량을 줄이고 화면 레이아웃을 깔끔하게 유지하는 데 도움이 됩니다.