MySQL 테이블 생성 시 CHAR_LENGTH() 함수 활용법
MySQL에서는 CREATE TABLE 문을 작성하는 시점에 CHAR_LENGTH(컬럼명) 함수를 사용하여 문자열의 길이를 자동으로 저장하는 컬럼을 만들 수 있습니다. 이렇게 다른 컬럼의 값을 기반으로 자동 계산되는 컬럼을 '생성 컬럼(Generated Column)'이라고 부르며, 데이터가 입력될 때마다 별도의 연산 없이 값이 유지됩니다.
테이블 생성 예제
먼저 예제를 통해 테이블을 생성해 보겠습니다.
mysql> create table DemoTable
(
Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
Title varchar(200),
`Number_of_characters` int as (char_length(Title))
);
Query OK, 0 rows affected (0.18 sec)
위 쿼리에서 Number_of_characters 컬럼은 Title 컬럼에 저장된 문자열의 길이를 CHAR_LENGTH() 함수로 계산하여 자동으로 채워지도록 정의되어 있습니다.
데이터 삽입하기
INSERT 명령을 사용하여 테이블에 레코드를 추가해 보겠습니다.
mysql> insert into DemoTable(Title) values('Introduction To MySQL');
Query OK, 1 row affected (0.06 sec)
mysql> insert into DemoTable(Title) values('Introduction To Java');
Query OK, 1 row affected (0.06 sec)
mysql> insert into DemoTable(Title) values('Introduction To MongoDB');
Query OK, 1 row affected (0.04 sec)결과 확인하기
SELECT 문으로 테이블의 모든 레코드를 조회합니다.
mysql> select *from DemoTable;
실행 결과는 다음과 같습니다.
+----+-------------------------+----------------------+
| Id | Title | Number_of_characters |
+----+-------------------------+----------------------+
| 1 | Introduction To MySQL | 21 |
| 2 | Introduction To Java | 20 |
| 3 | Introduction To MongoDB | 23 |
+----+-------------------------+----------------------+
3 rows in set (0.00 sec)
출력 결과를 보면 각 Title 값의 실제 문자 수가 Number_of_characters 컬럼에 자동으로 기록된 것을 확인할 수 있습니다.
참고로 CHAR_LENGTH() 함수는 한글과 같은 멀티바이트 문자도 한 글자로 정확하게 계산합니다. 반면 LENGTH() 함수는 바이트 수를 반환하기 때문에 한글의 경우 글자 수보다 큰 값이 나오므로, 순수한 문자 개수가 필요하다면 CHAR_LENGTH()를 사용하는 것이 좋습니다.