Computer >> 컴퓨터 >  >> 프로그래밍 >> MySQL

MySQL에서 VARCHAR 컬럼의 최대 길이(가장 긴 문자열 길이) 구하는 방법

MySQL에서 특정 VARCHAR 컬럼에 저장된 값 중 가장 긴 문자열의 길이를 확인하려면 CHAR_LENGTH() 함수와 MAX() 집계 함수를 함께 사용하면 됩니다.

기본 문법

가장 긴 VARCHAR 길이를 구하는 기본적인 쿼리 문법은 다음과 같습니다.

SELECT MAX(CHAR_LENGTH(컬럼명)) AS 별칭 FROM 테이블명;

CHAR_LENGTH()는 문자열의 문자 수를 반환하는 함수이며, 여기에 MAX()를 적용하면 해당 컬럼에서 가장 긴 값의 길이를 손쉽게 알아낼 수 있습니다.

예제 테이블 생성

실제 동작을 이해하기 위해 예제 테이블을 먼저 만들어 보겠습니다.

mysql> create table CharLengthDemo
    -> (
    -> Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
    -> Sentence varchar(255)
    -> );
Query OK, 0 rows affected (0.60 sec)

위 쿼리는 자동 증가되는 Id 기본 키와 최대 255자까지 저장할 수 있는 Sentence VARCHAR 컬럼으로 구성된 테이블을 생성합니다.

샘플 데이터 삽입

INSERT 명령을 사용해 몇 개의 레코드를 추가합니다.

mysql> insert into CharLengthDemo(Sentence) values('Java is an object oriented programming language');
Query OK, 1 row affected (0.45 sec)
mysql> insert into CharLengthDemo(Sentence) values('MySQL is a Relational Database Management System');
Query OK, 1 row affected (0.26 sec)
mysql> insert into CharLengthDemo(Sentence) values('JSP uses Java Programming Language');
Query OK, 1 row affected (0.24 sec)
mysql> insert into CharLengthDemo(Sentence) values('Object is a root class in java');
Query OK, 1 row affected (0.12 sec)

저장된 데이터 확인

SELECT 문을 사용해 테이블의 모든 레코드를 조회해 보겠습니다.

mysql> select *from CharLengthDemo;

실행 결과는 다음과 같습니다.

+----+--------------------------------------------------+
| Id | Sentence                                         |
+----+--------------------------------------------------+
|  1 | Java is an object oriented programming language  |
|  2 | MySQL is a Relational Database Management System |
|  3 | JSP uses Java Programming Language               |
|  4 | Object is a root class in java                   |
+----+--------------------------------------------------+
4 rows in set (0.00 sec)

가장 긴 VARCHAR 길이 조회하기

이제 앞서 소개한 문법을 적용해 가장 긴 문자열의 길이를 구하는 쿼리를 실행합니다.

mysql> SELECT MAX(CHAR_LENGTH(Sentence)) AS MAXLENGTH FROM CharLengthDemo;

실행 결과, 가장 긴 VARCHAR 값의 길이가 출력됩니다.

+-----------+
| MAXLENGTH |
+-----------+
|        48 |
+-----------+
1 row in set (0.00 sec)

결과 해석

결과를 보면 최대 길이는 48로 나타났습니다. 이는 두 번째 레코드인 'MySQL is a Relational Database Management System' 문자열의 길이와 일치합니다.

참고: CHAR_LENGTH()와 LENGTH()의 차이

MySQL에는 비슷한 함수로 LENGTH()가 있습니다. 두 함수의 차이는 다음과 같습니다.

  • CHAR_LENGTH(): 문자열의 문자 개수를 반환합니다. 한글이나 다국어 문자도 1로 계산됩니다.
  • LENGTH(): 문자열의 바이트 수를 반환합니다. UTF-8 환경에서는 한글 한 글자가 3바이트로 계산됩니다.

따라서 한글 데이터가 포함된 컬럼이라면 문자 기준으로 길이를 재는 CHAR_LENGTH()를 사용하는 것이 더 정확합니다.